Java Timer vs ExecutorService?
2022-08-31 05:10:37
我有代码,我使用.我环顾四周,看到也可以做同样的事情。所以这个问题在这里,你有没有使用和安排任务,一个使用比另一个有什么好处?java.util.TimerExecutorServiceTimerExecutorService
还想检查是否有人使用过该类,并遇到为他们解决的任何问题。TimerExecutorService
我有代码,我使用.我环顾四周,看到也可以做同样的事情。所以这个问题在这里,你有没有使用和安排任务,一个使用比另一个有什么好处?java.util.TimerExecutorServiceTimerExecutorService
还想检查是否有人使用过该类,并遇到为他们解决的任何问题。TimerExecutorService
根据Java并发实践:
Timer可以敏感地改变系统时钟,不是。ScheduledThreadPoolExecutorTimer只有一个执行线程,因此长时间运行的任务可能会延迟其他任务。 可以配置任意数量的线程。此外,如果需要,您可以完全控制创建的线程(通过提供 )。ScheduledThreadPoolExecutorThreadFactoryTimerTaskTimerScheduledThreadExecutorafterExecuteThreadPoolExecutor如果可以使用 代替 ,请这样做。ScheduledThreadExecutorTimer
还有一件事...虽然在Java 1.4库中不可用,但有一个JSR 166(java.util.concurrent)到Java 1.2,1.3,1.4的Backport,它具有该类。ScheduledThreadExecutorScheduledThreadExecutor
如果您可以使用它,那么很难想出不使用Java 5执行器框架的理由。叫:
ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor();
将为您提供 与 类似的功能(即它将是单线程的),但其访问可能稍微更具可扩展性(在引擎盖下,它使用并发结构而不是像类那样完全同步)。使用 a 还可以为您提供以下优势:ScheduledExecutorServiceTimerTimerScheduledExecutorService
newScheduledThreadPoolExecutor()ScheduledThreadPoolExecutor关于坚持我能想到的唯一原因是:Timer