scheduleAtFixedRate scheduleWithFixedDelay

在调度线程池中有这么两个方法,到底什么区别呢,且看我解释:

scheduleAtFixedRate :这个是按照固定的时间来执行,简单来说:到点执行
scheduleWithFixedDelay:这个呢,是等上一个任务结束后,在等固定的时间,然后执行。简单来说:执行完上一个任务后再执行

举例子

scheduledThreadPool.scheduleAtFixedRate(new TaskTest("执行调度任务3"),0, 1, TimeUnit.SECONDS);  //这个就是每隔1秒,开启一个新线程
scheduledThreadPool.scheduleWithFixedDelay(new TaskTest("第四个"),0, 3, TimeUnit.SECONDS); //这个就是上一个任务执行完,3秒后开启一个新线程

时间: 2024-11-06 22:34:32

scheduleAtFixedRate scheduleWithFixedDelay的相关文章

一文搞懂springboot定时任务

Introduction 在springboot中自带了一个轻量级的调度系统.如果我们希望在特定的时间或者以特定的时间间隔完成某些任务,那么它完全能够满足需求,不需要再额外引入像Quartz这种略显沉重的调度框架.下面我们就来介绍springboot中@scheduled 注解的用法. 环境:springboot 2.2.2 常用简单定时任务 首先,为了使用springboot中的定时任务,需要在springboot应用中加入 @EnableScheduling 注解.该注解开启对定时任务的支持

(原创)定时线程池中scheduleWithFixedDelay和scheduleAtFixedRate的区别

scheduleAtFixedRate 没有什么歧义,很容易理解,就是每隔多少时间,固定执行任务. scheduleWithFixedDelay 比较容易有歧义 貌似也是推迟一段时间执行任务,但Oracle的解释如下,delay 的意思是当结束前一个执行后延迟的时间 scheduleWithFixedDelay Parameters: command - the task to execute initialDelay - the time to delay first execution de

ScheduledThreadPoolExecutor线程池scheduleAtFixedRate和scheduleWithFixedDelay的区别

ScheduledFuture<?> result = executor.scheduleAtFixedRate(task,2, 5, TimeUnit.SECONDS); 在延迟2秒之后开始执行首个任务,之后每隔5秒执行一个任务,也就是固定间隔时间执行一次任务,而不是等到上个任务执行结束. ScheduledFuture<?> result = executor.scheduleWithFixedDelay(task,2, 5, TimeUnit.SECONDS); 在延迟2秒后

scheduleAtFixedRate和scheduleWithFixedDelay探究

scheduleAtFixedRate是用任务开始时间计算间隔,就是说某任务上次启动时间+间隔时间就是下次启动时间. scheduleWithFixedDelay是用任务结束时间计算间隔,就是说某任务上次结束时间+间隔时间就是下次启动时间. 这段代码模拟了一组10个任务,每个任务都有个name(任务名)和time(任务花费的时间).第6个任务(任务名为任务5)耗时15s,其他任务耗时1s.这一组任务分别用scheduleAtFixedRate(固定频率)和scheduleWithFixedDel

schedule vs scheduleAtFixedRate

区分二者的最好方法是 timer的启示时间设置一个过去的时间T,scheduleAtFixedRate会把从T到现在的任务全部执行,schedule只会从现在开始计时执行并任务. public class HelloMain { private static int count = 0; public static void main(String[] args) { Date date = new Date(System.currentTimeMillis() - 3000); Timer t

schedule() 和 scheduleAtFixedRate() 的区别--转载

1.  schedule() ,2个参数方法:在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行. 2.  schedule() ,3个参数方法:在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行,之后按period参数固定重复执行. 3.  scheduleAtFixedRate() ,3个参数方法:在

JAVA随笔篇一(Timer源代码分析和scheduleAtFixedRate的使用)

写完了基础篇,想了非常久要不要去写进阶篇.去写JSP等等的用法.最后决定先不去写.由于自己并非JAVA方面的大牛.眼下也在边做边学,所以决定先将自己不懂的拿出来学并记下来. Timer是Java自带的java.util.Timer类,通过调度一个java.util.TimerTask任务.这样的方式能够让程序依照某一个频度运行. 1.Timer类的源代码分析: public class Timer { /** * The timer task queue. This data structure

schedule() 和 scheduleAtFixedRate() 区别

1.  schedule() ,2个参数方法:在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行. 2.  schedule() ,3个参数方法:在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行,之后按period参数固定重复执行. 3.  scheduleAtFixedRate() ,3个参数方法:在

简单理解java中timer的schedule和scheduleAtFixedRate方法的区别

timer的schedule和scheduleAtFixedRate方法一般情况下是没什么区别的,只在某个情况出现时会有区别--当前任务没有来得及完成下次任务又交到手上. 我们来举个例子: 暑假到了老师给schedule和scheduleAtFixedRate两个同学布置作业. 老师要求学生暑假每天写2页,30天后完成作业. 这两个学生每天按时完成作业,直到第10天,出了意外,两个学生出去旅游花了5天时间,这5天时间里两个人都没有做作业.任务被拖延了. 这时候两个学生采取的策略就不同了: sch