1

看了源码java.util.Timer,发现java.util.Timer是由aTimerThread和a实现的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 应该最终退出......

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

4

3 回答 3

2

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

您只能通过类timer访问 (TimerThread) 线程。被封装在类内。实施方面,他们确保计时器停止接受对其队列的请求,但并没有停止。TimerTimerThreadTimerTimerThread

于 2012-12-21T07:01:43.423 回答
1

Timer是单个线程,它包含Task要执行的列表,一旦所有任务都成功执行,Timer线程实例将Garbage Collector在一段时间后调用

于 2012-12-21T07:15:39.833 回答
0

这可能会对您有所帮助...该部分描述了在某些情况下计时器线程未结束的原因。

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

于 2012-12-21T06:58:21.177 回答