Java 用fixedRate调度的Spring3似乎在某个点后意外停止执行,如何调试?

Java 用fixedRate调度的Spring3似乎在某个点后意外停止执行,如何调试?,java,multithreading,spring,spring-mvc,scheduled-tasks,Java,Multithreading,Spring,Spring Mvc,Scheduled Tasks,我在Spring3.2.4Web应用程序中有一个预定任务,该任务预定以1分钟的固定速度运行。大约一天后,任务停止执行,但无法预测何时会发生,因此我未能在开发环境中重现这一点 我试图收集一个线程转储,但恰好知道它在哪里停止了,但是,如果我正确解释了线程转储,线程在我的代码中不会被阻塞 线程转储的输出示例如下所示(线程池中的每个线程都有类似的转储): 对我来说,这看起来很正常——线程在池中等待 我的问题是,我如何进一步调试它?是否有办法在运行时以某种方式访问和转储有关spring调度状态的信息(例如

我在Spring3.2.4Web应用程序中有一个预定任务,该任务预定以1分钟的固定速度运行。大约一天后,任务停止执行,但无法预测何时会发生,因此我未能在开发环境中重现这一点

我试图收集一个线程转储,但恰好知道它在哪里停止了,但是,如果我正确解释了线程转储,线程在我的代码中不会被阻塞

线程转储的输出示例如下所示(线程池中的每个线程都有类似的转储):

对我来说,这看起来很正常——线程在池中等待


我的问题是,我如何进一步调试它?是否有办法在运行时以某种方式访问和转储有关spring调度状态的信息(例如,下一次执行时间、上次执行时间、正在执行的作业、线程池中有多少空闲线程等)?

在问题发生后立即再次执行线程转储,我发现原因计划任务有一个无限循环,在某些条件下可能发生

为供将来参考,线程转储采用了:

jstack [process id] > threaddump.txt
我设法解决了这个问题,但我仍然不太明白为什么问题无限循环没有出现在问题发生数小时后的线程转储中

jstack [process id] > threaddump.txt