3 回答

TA贡献1871条经验 获得超8个赞
Timer
对系统时钟的变化很敏感, ScheduledThreadPoolExecutor
不是。 Timer
只有一个执行线程,所以长时间运行的任务会延迟其他任务. ScheduledThreadPoolExecutor
可以配置任意数量的线程。此外,如果需要,您可以完全控制创建的线程(通过提供 ThreadFactory
).抛出运行时异常 TimerTask
切断一条线,从而使 Timer
死了:-(.也就是说,计划的任务将不再运行。 ScheduledThreadExecutor
不仅捕获运行时异常,而且它允许您在需要时(通过重写)处理它们。 afterExecute
法 ThreadPoolExecutor
)。抛出异常的任务将被取消,但其他任务将继续运行。
ScheduledThreadExecutor
Timer
ScheduledThreadExecutor
java.util.concurrent
ScheduledThreadExecutor

TA贡献1853条经验 获得超18个赞
ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor();
ScheduledExecutorService
Timer
Timer
ScheduledExecutorService
如果需要,可以自定义它(请参阅 newScheduledThreadPoolExecutor()
或者 ScheduledThreadPoolExecutor
(班级) “一次性”执行可以返回结果
Timer
它是可用的预Java 5 J2ME中提供了类似的类,这可以使您的应用程序更容易移植(但在本例中添加公共抽象层并不是非常困难)。

TA贡献1807条经验 获得超9个赞
添加回答
举报