首页 聚焦 财经 产业 证券 股市 商业 民生 IPO 点评 IPhone客户端 安卓客户端
首页/热搜汇聚

1

Scheduledthreadpoolexecutor是线程池调度任务的最小单位
2022-03-03

    ScheduledThreadPoolExecutor,它可另行安排在给定的延迟后运行命令,或者定期执行命令。需要多个辅助线程时,或者要求 ThreadPoolExecutor 具有额外的灵活性或功能时,此类要优于Timer。

ScheduledThreadPoolExecutor继承自ThreadPoolExecutor。它主要用来在给定的延迟之后运 行任务,或者定期执行任务。ScheduledThreadPoolExecutor的功能与Timer类似,但 ScheduledThreadPoolExecutor功能更强大、更灵活。Timer对应的是单个后台线程,而 ScheduledThreadPoolExecutor可以在构造函数中指定多个对应的后台线程数。

SchedualedThreadPoolExecutor 接收SchduledFutureTask类型的任务,是线程池调度任务的最小单位,有三种提交任务的方式:

   schedule:延迟多长时间之后只执行一次;scheduledAtFixedRate:延迟指定时间后执行一次,之后按照固定的时长周期执行; scheduledWithFixedDelay:延迟指定时间后执行一次,之后按照:上一次任务执行时长 + 周期的时长 的时间去周期执行;ScheduledThreadPoolExecutor继承ThreadPoolExecutor来重用线程池的功能,它的实现方式如下:

将任务封装成ScheduledFutureTask对象,ScheduledFutureTask基于相对时间,不受系统时间的改变所影响;ScheduledFutureTask实现了java.lang.Comparable接口和java.util.concurrent.Delayed接口,所以有两个重要的方法:compareTo和getDelay。compareTo方法用于比较任务之间的优先级关系,如果距离下次执行的时间间隔较短,则优先级高;getDelay方法用于返回距离下次任务执行时间的时间间隔;

ScheduledThreadPoolExecutor定义了一个DelayedWorkQueue,它是一个有序队列,会通过每个任务按照距离下次执行时间间隔的大小来排序;

ScheduledFutureTask继承自FutureTask,可以通过返回Future对象来获取执行的结果。

 

声明:登载此文出于传递信息之目的,本站仅供信息保存,如有异议请联系我们修订!
点赞
编辑:中证
中证新闻网
中证新闻网
中证点评更多

    在西藏昌都一望无际的牧场上,一...[详细]

民生经济更多
中证新闻网
科创板块更多
热搜汇聚更多
  • 合作: 商洽与内容纠错联系方式
  • Email:894204689@qq.com
  • CopyRight@2008-2024 中国证券新闻 All Right Reserved

    工信备案号:备案号京ICP(备)15095275

    中国证券新闻版权所有违者必究