线程的工具,用于在后台线程中安排将来执行的任务。 可以将任务安排为一次性执行,或者以固定间隔重复执行。对应于每个对象的是一个后台线程,用于按顺序执行所有计时器的任务。 计时器任务应该快速完成。 如果计时器任务需要花费过多的时间来完成,它会“占用”计时器的任务执行线程。 反过来,这可以延迟后续任务的执行,后续任务可以在紧急任务最终完成时(以及如果)快速连续地“聚集”并执行。
在对对象的最后一次实时引用消失并且所有未完成的任务都已完成执行之后,计时器的任务执行线程正常终止(并且变为垃圾回收)。 但是,这可能需要很长时间才能发生。 默认情况下,任务执行线程不作为守护程序线程运行,因此它能够阻止应用程序终止。 如果调用者想要快速终止计时器的任务执行线程,则调用者应该调用计时器的方法。
如果计时器的任务执行线程意外终止,例如,因为调用了其方法,则在计时器上安排任务的任何进一步尝试都将导致 ,就像调用了计时器的方法一样。
此类是线程安全的:多个线程可以共享单个对象,而无需外部同步。
此类不提供实时保证:它使用方法计划任务。
Java 5.0引入了包,其中一个并发实用程序是 ,它是一个线程池,用于以给定的速率或延迟重复执行任务。 这实际上是对一个更灵活的替代 / 组合,因为它允许多个服务线程,接受各种时间单位,并且不需要子类 (只实现 )。 使用一个线程配置使其等效于 。
实现说明:此类可扩展到大量并发计划任务(数千个应该没有问题)。 在内部,它使用二进制堆来表示其任务队列,因此调度任务的成本是O(log n),其中n是并发计划任务的数量。
实现说明:所有构造函数都启动一个计时器线程。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/12707.html