scheduleAtFixedRate与scheduleWithFixedDelay区别

    说起java的定时执行,相信大家第一反应想到的就是ScheduledExecutorService为我们提供的方法scheduleAtFixedRate与scheduleWithFixedDelay,这两个方法很多人容易混淆,看上去都是定时去执行,这里我就和大家一起来看看二者之间的区别。(ScheduledExecutorService也提供了单次延迟执行的方法schedule,但不在本文讨论之列)

1.scheduleAtFixedRate

    scheduleAtFixedRate从字面意思理解:固定频率执行。

    scheduleAtFixedRate的关键要点:

  •     固定频率执行
  •     虽然是以固定频率执行,但必须等上个任务执行完毕,下个任务才能开始执行
  •     initialDelay为初始延迟,period为设置的执行间隔,runTime为任务执行时长。初次开始执行是在initialDelay之后,后续每次开始执行的间隔为max(period, runTime)
测试用例1:initialDelay=0,period=1,runTime可以认为也接近于0(时间单位设置为秒)
package com.newbie.schedule;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * scheduleAtFixedRate与scheduleWithFixedDelay区别
 *
 * scheduleAtFixedRate:固定频率执行
 * 虽然是以固定频率执行,但必须等上个任务执行完毕,下个任务才能开始执行
 * initialDelay为初始延迟,period为设置的执行间隔,runTime为任务执行时长
 * 初次开始执行是在initialDelay之后,后续每次开始执行的间隔为max(period,runTime)
 *
 *
 * scheduleWithFixedDelay:固定延迟执行
 * initialDelay为初始延迟,period为设置的执行间隔,runTime为任务执行时长
 * 初次开始执行是在initialDelay之后,后续每次开始执行的间隔为runTime+period
 * 上个任务执行完
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值