一、scheduleAtFixedRate方法

该方法是ScheduledExecutorService中的方法,用来实现周期性执行给定的任务,public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit);

command:是给定的任务

initial:表示第一次开始任务时要延迟的时间

period:表示每次执行此任务要间隔的时间

unit: 是用来指定前两个的时间单位

执行次方后,开始计时,在延时结束后开始任务,并开始计算周期,下面分两种情况介绍

情况一:

执行任务的时间短,而周期长:这是执行完任务后,会等待周期结束,然后再次开始任务

情况二:

执行任务的时间长,而周期短;即在任务还未完成时,周期就已经结束,这时不能立马再开始一个任务,需要等待任务的完成,然后在开始任务,对于这种情况给出运行代码:

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; public class MyscheduleAtFixedRate { public static void main(String[] args) {
// TODO 自动生成的方法存根
ScheduledExecutorService executor=Executors.newScheduledThreadPool(2);
System.out.println("X "+System.currentTimeMillis());
executor.scheduleAtFixedRate(new MyRunableA_atfix(), 1, 1, TimeUnit.SECONDS);
System.out.println("Y "+System.currentTimeMillis());
} }
class MyRunableA_atfix implements Runnable{ @Override
public void run() {
// TODO 自动生成的方法存根 System.out.println("begin A "+System.currentTimeMillis());
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println("end A "+System.currentTimeMillis());
}
}

  运行结果:

X  1493197014282
Y 1493197014297
begin A 1493197015311
end A 1493197017340
begin A 1493197017340
end A 1493197019354
begin A 1493197019354

  这表明了任务一开始,延时1S,然后在周期结束后,等待当前任务的完成,在进行循环任务

二、scheduleAtFixedRate方法

此方法也是循环执行任务,这个方法的参数意义与scheduleAtFixedRate方法的相同

此方法设置的周期,开始计时的时间与上个方法不同,它是在任务完成之后开始计时的,表示的是上一个任务与下一个任务之间的时间间隔

关于scheduleAtFixedRate方法与scheduleWithFixedDelay的使用的更多相关文章

  1. ScheduledExecutorService中scheduleAtFixedRate方法与scheduleWithFixedDelay方法的区别

    ScheduledExecutorService中scheduleAtFixedRate方法与scheduleWithFixedDelay方法的区别 ScheduledThreadPoolExecut ...

  2. ScheduledThreadPoolExecutor的scheduleAtFixedRate方法探究

    ScheduledThreadPoolExecutor除了具有ThreadPoolExecutor的所有功能外,还可以延迟执行任务或者周期性的执 行某个任务.scheduleWithFixedDela ...

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

    timer的schedule和scheduleAtFixedRate方法一般情况下是没什么区别的,只在某个情况出现时会有区别--当前任务没有来得及完成下次任务又交到手上. 我们来举个例子: 暑假到了老 ...

  4. Timer的schedule和scheduleAtFixedRate方法的区别解析(转)

    在java中,Timer类主要用于定时性.周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 (1)sched ...

  5. Timer的schedule和scheduleAtFixedRate方法的区别解析

    在java中,Timer类主要用于定时性.周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 (1)sched ...

  6. 20145325张梓靖 《Java程序设计》第6周学习总结

    20145325张梓靖 <Java程序设计>第6周学习总结 教材学习内容总结 串流设计 输入串流(将数据从来源取出),代表对象为java.io.InputStream实例,输出串流(将数据 ...

  7. 第十章 Executor框架

    在Java中,使用线程来异步执行任务.Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源.同时,为每一个任务创建一个新线程来执行 ...

  8. 多线程编程学习十一(ThreadPoolExecutor 详解).

    一.ThreadPoolExecutor 参数说明 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keep ...

  9. (转)深入详解Java线程池——Executor框架

    转:https://yq.aliyun.com/articles/633782?utm_content=m_1000015330 在Java中,使用线程来异步执行任务.Java线程的创建与销毁需要一定 ...

随机推荐

  1. CMM模型,结构化开发方法和面向对象开发方法的比较,UML(统一建模语言),jackson开发方法

    CMM模型 一.CMM简介 CMM,英文全称为Capability Maturity Model for Software,即:软件成熟度模型. CMM的核心是把软件开发视为一个过程.它是对于软件在定 ...

  2. bzoj1004 [HNOI2008]Cards Burnside定理+背包

    题目传送门 思路:首先是Burnside引理,要先学会这个博客. Burnside引理我们总结一下,就是 每种置换下不动点的数量之和除以置换的总数,得到染色方案的数量.        这道题,显然每种 ...

  3. CodeForces 1043D Mysterious Crime 区间合并

    题目传送门 题目大意: 给出m个1-n的全排列,问这m个全排列中有几个公共子串. 思路: 首先单个的数字先计算到答案中,有n个. 然后考虑多个数字,如果有两个数字相邻,那么在m个串中必定都能找到这两个 ...

  4. ZOJ Monthly, January 2019 Little Sub and his Geometry Problem ZOJ4082(模拟 乱搞)

    在一次被自己秀死... 飞机 题目: 给出N,K, Q; 给出一个N*N的矩阵  , 与K个特殊点 , 与Q次查询 , 每次查询给出一个C , 问 在这个N*N矩阵中 , 有多少的点是满足这样的一个关 ...

  5. Oracle下lag和lead分析函数

    [转自] http://blog.csdn.net/thinkscape/article/details/8290894 Lead和Lag分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag) ...

  6. javascript的Astar版 寻路算法

    去年做一个模仿保卫萝卜的塔防游戏的时候,自己写的,游戏框架用的是coco2d-html5 实现原理可以参考 http://www.cnblogs.com/technology/archive/2011 ...

  7. 2019.3.20 I/O相关

    I/O 相关简介 什么是I/O? IO,即Input (输入)和Output (输出)的首字母缩写. 什么是流? 流(Stream)是抽象概念,它代表任何有能力产出数据的数据源对象或者是与能力接收数据 ...

  8. Python爬虫常用之PyQuery

    PyQuery是解析页面常用的库.是python对jquery的封装.下面是一份解析基本页面的代码.后期用到复杂或者实用的方式再增加. from pyquery import PyQuery as p ...

  9. vue中使用对非表单元素使用contenteditable的问题

    先说下问题,再上解决方案: span编辑时有多余空格和回车会影响样式(我用的是span便以此为例) 代码:(有换行符) 效果图: 代码:(无换行符) 效果图: 当在span标签的contentedit ...

  10. nyoj1032——Save Princess——————【set应用】

    Save Princess 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 Yesterday, the princess was kidnapped by a de ...