关于 quartz 1.6.1 的一个死等问题,导致任务不执行
来源:互联网 发布:淘宝资质1000什么意思 编辑:程序博客网 时间:2024/05/16 09:30
使用 quartz 1.6.1 上出现了一个并发的问题。
由于有多个 Job 几乎同时并发,有时导致 Quartz 陷入死等状态,再也不执行任务了。
具体 bug 可见:http://jira.opensymphony.com/browse/QUARTZ-707?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel
对应 src: http://svn.terracotta.org/fisheye/browse/Quartz/trunk/src/java/org/quartz/core/QuartzSchedulerThread.java?r=865
当任务大量并发,而执行的时间又不固定,可能等于或者超过两次任务执行的间隔时,容易出现这个问题。
原因是在 QuartzSchedulerThread 的 296 行有个 wait(time) 方法,其中的 time 有可能是 0,导致死等。
这已经在 quartz 1.6.2 以后的版本中修复了。
花了两天时间研究,终于发现了这个问题。
期间获得了一个方法,在linux系统下,若线程陷入困境,可用 kill -3 pid 的方法打印出线程的运行状态,
可以看出来各线程分别运行在什么位置。打印输出在标准输出中,比如 tomcat 线程就在 catalina.out 中。
- 关于 quartz 1.6.1 的一个死等问题,导致任务不执行
- 关于 quartz 1.6.1 的一个死等问题,导致任务不执行
- 关于 quartz 1.6.1 的一个死等问题,导致任务不执行
- 关于Quartz任务不准时执行问题
- Quartz任务不执行问题
- 可能导致Oozie定时任务执行不准确的问题
- 关于spring的quartz(定时任务执行)问题,
- 关于自动执行任务的Quartz框架
- 关于ExitInstance不执行,导致很多内存泄漏的问题
- Quartz任务重复执行的问题
- 关于开发中如何防止死等程序导致其它任务运行不了方法
- quartz个别任务不执行处理
- spring quartz 定时任务执行两次的问题
- 解决spring quartz定时任务执行2次的问题
- Spring中quartz任务调度执行两次的问题处理
- 一个曾经的时髦说法1--“上ERP找死”,“不上ERP等死”。
- 关于Quartz一个例子的问题
- C# Quartz任务执行频率问题
- WINDOWS下使用PTHREAD库(转)
- 详解Oracle数据库中DUAL表的使用
- Nginx配置文件解析之三
- 能大大提升工作效率和时间效率的9个重要习惯
- 使用用JavaScript或Jquery获取标准下拉框的"选中值"和"选中文本"
- 关于 quartz 1.6.1 的一个死等问题,导致任务不执行
- Eclipse中查看源码
- 查看、修改oracle字符集,查看oracle版本
- ORA-01105: mount is incompatible with mounts by other instances
- FindChildControl与FindComponent
- Java System类
- android 获取手机电话号码
- ZTE-H108L路由设置方法
- emacs 工程管理工具 ede 的帮助文档