如何在Timer中终止TimerThread

时间:2012-12-21 06:50:12

标签: java timer

当我阅读java.util.Timer的源代码时,我发现java.util.Timer是由TimerThreadTaskQueue

实现的

据说java.util.Timer可以取消java.util.Timer.cancel()

但是当我打电话给java.util.Timer.cancel()时,我发现Timer中的TimerThread仍在运行,

这是在线系统的问题吗?

如果可能,我如何在TimerThread内停止java.util.Timer


TimerThread(jdk 7)的来源,我终于发现Timer.cancel()可行。

TimerThread 等待 TaskQueue,当Timer.cancel()被调用时,TaskQueue 通知 TimerThread,并且TimerThead应该最终退出如果`TaskQueue是EMPTY ......

感谢您的评论,抱歉浪费您的时间。

3 个答案:

答案 0 :(得分:2)

计时器线程仍将运行。但是根据实现,计时器线程将停止接受任何进入队列的任何内容。

timer(TimerThread)线程只能通过Timer类访问。 TimerThread内容Timer已被封装。实施方面,他们已确保Timer停止接受对其队列的请求,但TimerThread本身并未停止。

答案 1 :(得分:1)

Timer是单线程,其中包含要执行的Task列表,一旦所有任务执行完毕,Timer线程实例将在一段时间后被Garbage Collector调用

答案 2 :(得分:0)

这可能会对您有所帮助......本节介绍了在某些情况下计时器线程不会结束的原因。

http://enos.itcollege.ee/~jpoial/docs/tutorial/essential/threads/timer.html