1
我有一个需要按计划执行的任务。 (它基本上轮询数据库寻找变化,然后根据结果执行代码)。问题是我需要轮询的任务发生,即使它已经在执行。Java线程任务的并发执行
到目前为止,我已经尝试使用scheduleAtFixedRate()
方法和带有scheduleAtFixedRate()
方法的ScheduledThreadPoolExecutor/Thread组合与Timer/TimerTask组合。
都在等待当前计划的任务完成后才能运行下一个。我需要能够安排任务每5秒运行一次,并在任务的最后一次执行尚未完成时运行。
任何想法?
这是工作,但如果其中一个线程从池中产生一个异常(即使我赶上它)它似乎取消“启动”定时器并阻止它轮询。 – Tom 2010-09-06 11:10:47
@Tom:这看起来不太可能,因为到那时它将处于不同的线程。如果您可以提供一个简短但完整的程序来证明问题,那将有所帮助。 – 2010-09-06 11:25:18
我刚刚意识到是什么导致了这个问题。实际上,当一个异常引发了外观已挂起的异常时,我并未从活动线程列表中删除该线程。谢谢你的帮助! :) – Tom 2010-09-06 11:33:46