Ada*_*ski 15
正如其他人所提到的,不是它不被弃用但我个人总是使用ScheduledExecutorService
它,因为它提供了更丰富的API和更多的灵活性:
ScheduledExecutorService
允许您指定线程数,而Timer
始终使用单个线程.ScheduledExecutorService
可以通过ThreadFactory
允许控制除名称/守护程序状态之外的线程方面(例如,优先级ThreadGroup
,UncaughtExceptionHandler
)来构造.ScheduledExecutorService
允许以固定延迟和固定速率安排任务.ScheduledExecutorService
接受Callable
/ Runnable
作为它的工作单元,这意味着你不需要TimerTask
专门使用子类来使用它; 即你可以将相同的Callable
实现提交给常规ExecutorService
或ScheduledExecutorService
.我认为这是一种误解.Timer类的JavaDoc提到ScheduledThreadPoolExecutor
并注意到,这个类实际上是 Timer/TimerTask组合的更通用的替代品.没有其他的.不推荐使用Timer.
这次来自JavaDoc,ScheduledThreadPoolExecutor的另一个引用:
ThreadPoolExecutor,可以额外调度命令在给定延迟后运行,或定期执行.当需要多个工作线程时,或者当需要ThreadPoolExecutor(此类扩展)的额外灵活性或功能时,此类优于Timer.
JDK\xe2\x80\x99s bug 跟踪器中有[JDK-8154799] 弃用 Timer 和 TimerTask,并且在 2016 年中期JEP 277中指出java.util.Timer
( 和TimerTask
) 将在 JDK 9 中弃用。
\n\n\n一些 Java SE API 将添加、更新或删除 @Deprecated 注释。下面列出了此类更改的一些示例。
\n\n[\xe2\x80\xa6]
\n\n\n
\n- 添加 @Deprecated 到
\njava.util.Timer
和TimerTask
但是,在 JDK 9 版本中,这些类并未被弃用(已弃用的类可以在弃用列表中找到)。
\n 归档时间: |
|
查看次数: |
13743 次 |
最近记录: |