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注释。 下面列出了这些更改的一些示例。

[...]

  • 将@Deprecated添加到java.util.TimerTimerTask
  • 但是,在JDK 9发行版中,这些类不被弃用(已弃用的类可以在弃用列表中找到)。


    正如其他人所提到的,不,不会弃用,但我个人总是使用ScheduledExecutorService因为它提供了更丰富的API和更多的灵活性:

  • ScheduledExecutorService允许您指定线程数,而Timer总是使用单个线程。
  • ScheduledExecutorService可以使用一个ThreadFactory来构造,从而允许控制除了名称/守护进程状态(例如,priority, ThreadGroupUncaughtExceptionHandler )以外的线程方面。
  • ScheduledExecutorService允许以固定的延迟和固定的速率对任务进行调度。
  • ScheduledExecutorService接受Callable / Runnable作为其工作单元,这意味着您不需要专门为其使用TimerTask ; 即您可以将相同的Callable实现提交给常规的ExecutorServiceScheduledExecutorService

  • 我认为这是一个误解。 Timer类的JavaDoc提到了ScheduledThreadPoolExecutor和笔记,这个类实际上是Timer / TimerTask组合的更多功能的替代品。 没有其他的。 计时器不被弃用。

    JavaDoc,ScheduledThreadPoolExecutor这次的另一个引用:

    一个ThreadPoolExecutor,可以额外安排命令在给定延迟后运行,或定期执行。 当需要多个工作线程时,或者需要ThreadPoolExecutor(此类扩展)的附加灵活性或功能时,此类比Timer更适合。

    链接地址: http://www.djcxy.com/p/74919.html

    上一篇: java.util.Timer: Is it deprecated?

    下一篇: Pause the timer and then continue it