锁定老帖子 主题:Timer的混乱行为
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-02-02
import java.util.Timer; 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-02-02
Exception in thread "Timer-0" java.lang.RuntimeException
at Test.OutOfTime$ThrowTask.run(OutOfTime.java:25) at java.util.TimerThread.mainLoop(Timer.java:512) at java.util.TimerThread.run(Timer.java:462) Exception in thread "main" java.lang.IllegalStateException: Timer already cancelled. at java.util.Timer.sched(Timer.java:354) at java.util.Timer.schedule(Timer.java:170) at Test.OutOfTime.main(OutOfTime.java:15) 有什么混乱么? 第一个异常是ThrowTask(thread "Timer-0")抛出的,此时timer被cancelled 第二个异常是jvm(thread "main")抛出的.即执行第二句timer.schedule(new ThrowTask(), 1);时,判断timer对象状态是cancelled,而抛出异常.程序结束. |
|
返回顶楼 | |
发表时间:2012-02-03
主要是一般的情况下,肯定不希望第一个工作的异常,影响到第二个工作任务的执行。
|
|
返回顶楼 | |
发表时间:2012-02-03
要么使用多个timer,要么做好Exception处理
|
|
返回顶楼 | |
发表时间:2012-02-07
对,或者使用Executor
|
|
返回顶楼 | |
发表时间:2012-02-15
Timer都不推荐使用了吧,用Executor框架吧。
|
|
返回顶楼 | |
发表时间:2012-02-17
Timer有几个问题:
1、run抛出异常,在一些平台中(如win)可以继续运行,一些平台就直接终止掉了,如AIX 2、修改系统时间,会导致Timer终止 所以,在jdk1.5及以后,Timer应该被废弃使用,ScheduledExecutorService才是首选 |
|
返回顶楼 | |
发表时间:2012-02-19
这不算混乱吧,只是你在用之前不清楚它的规则
|
|
返回顶楼 | |
发表时间:2012-02-20
继承TimerTask类然后在该类中定义异常,主方法直接调用该子类实现该方法就可以就可以
|
|
返回顶楼 | |
发表时间:2012-02-20
这么走才是正常的
|
|
返回顶楼 | |