Java: Timer启用后无法停止?如何停止Timer
2011-08-22 19:23
309 查看
本人也遇到这个问题,好吧,就转载了:
http://www.douban.com/note/64661564/
利用Timer和TimerTask可以实现定时完成某些任务。 但是在运行过程中出现了很奇怪的现象: 所有TimerTask都完成了,按理说程序应该自动退出,但是它却没有! 我以为是Eclipse的bug,然后再cmd下尝试,同样是无法退出。 这种现象在只要new了一个Timer(),就会出现。 奇怪,谷歌了一下,找不到答案,但是找到零星的提问同样的问题的帖子。 还是自己动手看看帮助文档吧。。。 在JDK1.5的文档Timer类中,有这样一句话: “对 Timer 对象最后的引用完成后,并且 所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。” 但是这个“很长时间”是多长呢?一直等也没见它停止。。。 既然会成为垃圾回收的对象,那么我们就主动让系统回收一下吧。在每个TimerTask的run()方法最后加上一行代码: System.gc(); 然后再运行程序,搞定,正常了。 很自然会想到应该保证在Timer的最后一个TimerTask的最后调用gc(),但是经尝试发现只要在某一个TimerTask中调用过gc(),然后程序就能正常结束。并且gc()也不必放在最后。
http://www.douban.com/note/64661564/
相关文章推荐
- Java: Timer启用后无法停止?如何停止Timer
- 如何停止JAVA线程
- Java:如何正确使用Timer【java定时器的使用(Timer) 】
- JAVA 如何使jtable的列宽无法拖动
- 用IntelliJ IDEA建maven项目,如何解决main下无法创建java源文件
- 如何解决java.sql.Statement无法处理特殊字符以及容易被黑问题
- 如何在 Web 浏览器中启用 Java?
- 关于如何处理JSONObject.fromObject(Object obj)无法转换特殊日期(java.sql.Date,java.sql.Timestamp)格式的问题。
- JAVA——如何停止线程呢?(interrupt)
- 学习如何在 Java 代码中启用和禁用断言
- 如何停止一个正在运行的java线程
- eclipse中java build path下 allow output folders for source folders 无法勾选,该如何解决 eclipse中java build path下 allow output folders for source folders 无法勾选,
- 无法将java.lang.Object中的toString()方法应用于java.lang.String[] 中,如何解决?
- 如何在 Web 浏览器中启用 Java?
- 如何通过PowerShell停止/启用 Distributed Cache 服务?
- Java 如何启用 ARM 虚拟机诊断
- java中如何停止(stop)一个线程
- C# 控制台程序下,如何启用Timer 及多次调用后如何更改周期
- 如何正确停止线程(JAVA)