我在我的 Web 应用程序中使用 Timertask
每天午夜每 24 小时启动一次后台线程。所以我有一个 ServletContextListener,在 contextInitialized 中,我创建了一个 Timertask 对象 timertask(say) 和一个 Timer 对象 say t。
我打电话
t.schedule(timertask, firstTime.getTime(), rescheduleMiliSec);
其中 firstTime.getTime() = 午夜
和 rescheduleMiliSec = 24 小时
。
该线程启动正常,并执行它在 DIT 中应该执行的操作。它每 24 小时启动一次后台任务。
当它移动到 PROD 时,线程只在上下文初始化时运行一次,但之后不会运行。
是否有任何特定设置可能导致此问题?
最佳答案
您的 TimerTask 实现是否可能抛出 RuntimeException?
如果不是异常,则在该 Timer 中调度的某些 TimerTask 将无限期阻塞。这是我所知道的唯一可能导致计时器失败的两种情况。
顺便说一句,你可能想看看 ScheduledExecutorService .这是更现代的任务调度方式。
关于java - 定时任务不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4001046/