ScheduledExecutorService的理解

1.ScheduledExecutorService可以实现循环和延迟任务

ScheduledExecutorService 和 Timer 的区别

Timer的内部只有一个线程,如果有多个任务的话就会顺序执行,这样我们的延迟时间和循环时间就会出现问题。

当需要延迟任务与循环任务的时候可以考虑ScheduledExecutorService

通过静态方法创建ScheduledExecutorService

ScheduledExecutorService service = Executors.newScheduledThreadPool(1);

当调度任务来的时候,ScheduledExecutorService才会真正启动一个线程,其余时间ScheduledExecutorService都是出于轮询任务的状态。

ScheduleAtFixedRate 和 ScheduleWithFixedDelay的区别

ScheduleAtFixedRate固定时间间隔的时间调度,即今天八点开始执行,接着每隔两天执行一次即为固定时间间隔执行任务

ScheduleWithFixedDelay取决于每次任务执行的时间长短进行,下一次任务的开始执行完全取决于上一次任务的执行。基于不固定的时间间隔进行任务调度。

 service.scheduleAtFixedRate(new Runnable() {
                    @Override
                    public void run() {

                     }

}, initDelayDay, delayDay, TimeUnit.SECONDS);

initDelayDay表示执行的开始时间

delayDay表示相隔多少时间后执行

TimeUnit.SECONDS以秒为单位进行执行

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值