java.util.Timer:是否被弃用?
我在对这个答案的评论中以及有关调度(抱歉,没有引用)的许多其他问题中阅读了java.util.Timer
已弃用。 我真的希望没有,因为我使用它作为在Java中安排事情的轻松方式(它很好地工作)。 但如果它被弃用,我会在其他地方看看。 但是,快速浏览1.6版的API文档并没有提到它被弃用的任何内容。 Sun的弃用列表中甚至没有提及它。
它是否被正式弃用?如果是这样,我应该使用什么?
*另一方面, 如果它不被弃用,人们是否可以阻止这种无辜而且出色的课堂教学?
[JDK-8154799]在JDK的错误跟踪器中弃用了Timer和TimerTask,并且在2016年年中,JEP 277声明java.util.Timer
(和TimerTask
)将在JDK 9中弃用。
几个Java SE API将添加,更新或删除@Deprecated注释。 下面列出了这些更改的一些示例。
[...]
java.util.Timer
和TimerTask
但是,在JDK 9发行版中,这些类不被弃用(已弃用的类可以在弃用列表中找到)。
正如其他人所提到的,不,不会弃用,但我个人总是使用ScheduledExecutorService
因为它提供了更丰富的API和更多的灵活性:
ScheduledExecutorService
允许您指定线程数,而Timer
总是使用单个线程。 ScheduledExecutorService
可以使用一个ThreadFactory
来构造,从而允许控制除了名称/守护进程状态(例如,priority, ThreadGroup
, UncaughtExceptionHandler
)以外的线程方面。 ScheduledExecutorService
允许以固定的延迟和固定的速率对任务进行调度。 ScheduledExecutorService
接受Callable
/ Runnable
作为其工作单元,这意味着您不需要专门为其使用TimerTask
; 即您可以将相同的Callable
实现提交给常规的ExecutorService
或ScheduledExecutorService
。 我认为这是一个误解。 Timer类的JavaDoc提到了ScheduledThreadPoolExecutor
和笔记,这个类实际上是Timer / TimerTask组合的更多功能的替代品。 没有其他的。 计时器不被弃用。
JavaDoc,ScheduledThreadPoolExecutor这次的另一个引用:
一个ThreadPoolExecutor,可以额外安排命令在给定延迟后运行,或定期执行。 当需要多个工作线程时,或者需要ThreadPoolExecutor(此类扩展)的附加灵活性或功能时,此类比Timer更适合。
链接地址: http://www.djcxy.com/p/74919.html