读取java.util.Timer
的源代码时,我发现java.util.Timer
由TimerThread
和TaskQueue
实现
据说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
,如果`TaskQueue为EMPTY,则TimerThead应该最终退出...
感谢您的评论,很抱歉浪费您的时间。
最佳答案
计时器线程仍将运行。但是计时器线程将根据实现停止接受任何内容到队列中。
您只能通过timer
类访问Timer
(TimerThread)线程。 TimerThread
被封装在Timer
类中。在实现方面,他们已确保Timer停止接受对其队列的请求,但TimerThread
不会因此停止。
关于java - 如何终止Timer中的TimerThread,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13985554/