Java 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秒钟执行一次job1service.scheduleAtFixedRate(new MyScheduledExecutor('job1'), initialDelay, period, TimeUnit.SECONDS);// 从现在开始2秒钟之后,每隔2秒钟执行一次job2service.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 取决于每次任务执行的时间长短,是基于不固定时间间隔进行任务调度。
到此这篇关于Java ScheduledExecutorService定时任务案例讲解的文章就介绍到这了,更多相关Java ScheduledExecutorService定时任务内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章:
1. 无线标记语言(WML)基础之WMLScript 基础第1/2页2. ASP中解决“对象关闭时,不允许操作。”的诡异问题……3. asp知识整理笔记4(问答模式)4. Springboot 如何实现filter拦截token验证和跨域5. 如何解决 Ubuntu 中文乱码问题——文本、MP3和Rar压缩文件及aMule6. PHP与 xajax使用方法说明7. Idea+maven搭建SSH(struts2+hibernate5+spring5)环境的方法步骤8. 小 200 行 Python 代码制作一个换脸程序9. 得到XML文档大小的方法10. Docker安装、创建镜像、加载并运行NodeJS程序的详细过程

网公网安备