3 回答
TA贡献1871条经验 获得超8个赞
Timer对系统时钟的变化很敏感, ScheduledThreadPoolExecutor不是。 Timer只有一个执行线程,所以长时间运行的任务会延迟其他任务. ScheduledThreadPoolExecutor可以配置任意数量的线程。此外,如果需要,您可以完全控制创建的线程(通过提供 ThreadFactory).抛出运行时异常 TimerTask切断一条线,从而使 Timer死了:-(.也就是说,计划的任务将不再运行。 ScheduledThreadExecutor不仅捕获运行时异常,而且它允许您在需要时(通过重写)处理它们。 afterExecute法 ThreadPoolExecutor)。抛出异常的任务将被取消,但其他任务将继续运行。
ScheduledThreadExecutorTimer
ScheduledThreadExecutorjava.util.concurrentScheduledThreadExecutor
TA贡献1853条经验 获得超18个赞
ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor();
ScheduledExecutorServiceTimerTimerScheduledExecutorService
如果需要,可以自定义它(请参阅 newScheduledThreadPoolExecutor()或者 ScheduledThreadPoolExecutor(班级) “一次性”执行可以返回结果
Timer
它是可用的预Java 5 J2ME中提供了类似的类,这可以使您的应用程序更容易移植(但在本例中添加公共抽象层并不是非常困难)。
TA贡献1807条经验 获得超9个赞
添加回答
举报
