java定时任务接口ScheduledExecutorService

java定时任务接口ScheduledExecutorService一、ScheduledExecutorService设计思想ScheduledExecutorService,是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说

大家好,又见面了,我是你们的朋友全栈君。

一、ScheduledExecutorService 设计思想

ScheduledExecutorService,是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。

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

1、线程任务

class MyScheduledExecutor implements Runnable {
    
    private String jobName;
    
    MyScheduledExecutor() {
        
    }
    
    MyScheduledExecutor(String jobName) {
        this.jobName = jobName;
    }

    @Override
    public void run() {
        
        System.out.println(jobName + " is running");
    }
}

2、定时任务

public static void main(String[] args) {
        ScheduledExecutorService service = Executors.newScheduledThreadPool(10);
        
        long initialDelay = 1;
        long period = 1;
        // 从现在开始1秒钟之后,每隔1秒钟执行一次job1
        service.scheduleAtFixedRate(new MyScheduledExecutor("job1"), initialDelay, period, TimeUnit.SECONDS);
        
        // 从现在开始2秒钟之后,每隔2秒钟执行一次job2
        service.scheduleWithFixedDelay(new MyScheduledExecutor("job2"), initialDelay, period, TimeUnit.SECONDS);
    }

ScheduledExecutorService 中两种最常用的调度方法 ScheduleAtFixedRate 和 ScheduleWithFixedDelay。ScheduleAtFixedRate 每次执行时间为上一次任务开始起向后推一个时间间隔,即每次执行时间为 :initialDelay, initialDelay+period, initialDelay+2*period, …;ScheduleWithFixedDelay 每次执行时间为上一次任务结束起向后推一个时间间隔,即每次执行时间为:initialDelay, initialDelay+executeTime+delay, initialDelay+2*executeTime+2*delay。由此可见,ScheduleAtFixedRate 是基于固定时间间隔进行任务调度,ScheduleWithFixedDelay 取决于每次任务执行的时间长短,是基于不固定时间间隔进行任务调度。

参考文献 :

http://www.ibm.com/developerworks/cn/java/j-lo-taskschedule/

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154854.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea是什么软件_总结IDEA开发的26个常用设置

    idea是什么软件_总结IDEA开发的26个常用设置IDEA软件设置Settings页面Settings是对软件本身的一些属性进行配置,例如字体主题背景图插件等。如何打开Settings设置页面Settings设置页面结构详解结构Appearance&Behavior外观和行为Keymap快捷键Editor编辑器设置Plugins插件VersionControl版本控制Build,Execution,Deployme…

    2022年8月29日
    7
  • tkmapper教程_tkr和tka的区别

    tkmapper教程_tkr和tka的区别tkMapper入门1、tkMapper介绍1.1SpringBoot整合MyBatis以及tkMapper1.2在启动类上修改注解`@MapperScan`2、tkMapper的使用2.1创建数据表2.2创建实体类2.3创建Mapper接口2.4测试3、tkMapper的常用方法3.1类别实体类3.2类别接口增加修改删除查询查询所有根据主键查询条件查询分页查询带条件的分页查询关联查询1、通过多个单表操作实现2、自定义连接查询2.1、在DAO接口自定义方法2.2、创建Mapper文件1、

    2022年10月7日
    5
  • ubuntu pycharm2021.12 profession激活码【2021.10最新】

    (ubuntu pycharm2021.12 profession激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~F…

    2022年3月30日
    187
  • RestFul风格「建议收藏」

    RestFul风格「建议收藏」RestFul风格概念Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。功能资源:互联网所有的事物都可以被抽象为资源资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。分别对应添加、删除、修改、查询。传统方式操作资源:通过不同的参数来实现不同的效果!方法单一,post和get​ http://127.0.0.1/item/queryItem.actio

    2022年6月15日
    29
  • 嵌入式C语言的小细节,excel的几个函数[通俗易懂]

    嵌入式C语言的小细节,excel的几个函数[通俗易懂]记录一下笔记嵌入式C语言有时候无法使用Static关键字嵌入式C语言中如果定义了变量没有使用可能报错嵌入式C语言中如果定义了无符号类型的变量最好别去和0比较,可能会报错嵌入式C语言的技巧if,else的嵌套使用得好可以加快速度excel的使用=‘sheet’!A1跨表传递数据很有用excel的使用中,=count(obj1:obj2)是一个很厉害的函数,作用是统计obj1到obj2的数字的个数;…

    2022年10月21日
    5
  • 纸张与什么是使用喷墨打印机所需的消耗品(打印机打印出来的纸黑乎乎的)

    【PConline杂谈】一直潜心研究打印机的小编,由于长时间周旋于各种打印机,甚是无聊。因此近日研究了点特别的东西。关于打印机耗材方面,一般都是硒鼓、墨盒等。对于打印机要用量最大的纸张耗材,却鲜有人关注。于是,小编就趁着元旦假期去恶补了下相关知识。对于常用的纸张耗材,给人的感觉却是熟悉而又陌生的。因此,因此这篇文章就谈一谈关于纸的知识。纸,四大古代发明之一,在人们的日常生活中发挥着及其重要的作用…

    2022年4月11日
    107

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号