java - quartz 简单触发器在一段时间后不起作用

标签 java quartz-scheduler

我正在使用 quartz 简单触发器( quartz 2.2.1),设置为无限期重复。所有计划在生产中都运行良好,但最近它们停止工作,并且下一次火灾时间也没有更新。 如果我使用 rescheduleJobquartz API 更新计划,它会在一段时间内正常工作,然后再次陷入卡住状态。 有关于这是如何发生的任何信息吗?

线程转储通过 onObject 监控显示所有处于定时等待状态的线程。

"UDPQuartzScheduler_Worker-8" #49 prio=4 os_prio=0 tid=0x00007f88d71a8000 nid=0x30b6 in Object.wait() [0x00007f8928b30000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
    - locked <0x00000006ddc9d6b0> (a java.lang.Object)

"UDPQuartzScheduler_Worker-7" #48 prio=4 os_prio=0 tid=0x00007f88d71a6000 nid=0x30b5 in Object.wait() [0x00007f8928c31000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
    - locked <0x00000006ddc9d6f8> (a java.lang.Object)

"UDPQuartzScheduler_Worker-6" #47 prio=4 os_prio=0 tid=0x00007f88d71a4000 nid=0x30b4 in Object.wait() [0x00007f8928d32000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
    - locked <0x00000006ddc9f000> (a java.lang.Object)

最佳答案

即使增加线程数,您也可能会遇到同样的问题,因为您的工作线程将再次卡住。 要解决此问题,您必须检查工作线程代码并检查它们是否卡住某些任务执行时间过多(基本上,当您编写/读取太多数据)。这两个原因也造成了失火问题。

如果您找不到与我上面提到的要点相关的任何内容,那么您可以通过工作线程创建单独的线程,而不是在工作线程上执行它。它肯定会解决您的问题,但如果应用程序进程中卡住了太多线程,那么您的应用程序将被卡住,但同时您将从应用程序进程堆栈跟踪中获得此问题的确切原因。

关于java - quartz 简单触发器在一段时间后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45671590/

相关文章:

java - Quartz Scheduler : java. lang.IllegalStateException: JobStore is shutdown - 中止重试

java - 如果失败则在给定时间内执行任务

java - 尝试编写一个可以使用 yovenny/VideoCompress 将视频压缩为小尺寸的代码

java - 自动/最适合 JTable 列,但拉伸(stretch)最后一列

java - 通过带有可 window 口的 ProcessBuilder 触发 cmd.exe 命令

JAVA Quartz的谜题

java - 如何在 Simple Quartz Scheduler 中安排时间间隔

java - 为什么Java源码中有些ASCII字符不能以 '\uXXXX'的形式表示?

java - 检查对话框是否可见 - Espresso

java.net.SocketException : Broken pipe with Quartz and MySQL and Tomcat (Tomcat Crash) 异常