ScheduledExecutorService周期性的定时任务
从j2se的api文档上查看ScheduledExecutorService的方法都是推迟一段时间然后相隔一段时间之后再去执行,没有想Timer定时器一样的可以在定点时间执行的api,如果也想像Timer那样定时执行就需要对ScheduledExecutorService的方法传入参数处理一下,下面是个人使用ScheduledExecutorService做的每天凌晨3点做的定时执行任务demo
- package com.liu.test;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.concurrent.Executors;
- import java.util.concurrent.ScheduledExecutorService;
- import java.util.concurrent.ScheduledFuture;
- import java.util.concurrent.TimeUnit;
- public class ThreadTest {
- public static void main(String[] args) {
- //创建含有三个线程的计划线程池
- ScheduledExecutorService service = Executors.newScheduledThreadPool(3);
- //一天的毫秒数
- long oneDay = 24 * 60 * 60 * 1000;
- //计算初始延迟的毫秒数
- long initDelay = getTimeMillis("3:00:00") - System.currentTimeMillis();
- initDelay = initDelay > 0 ? initDelay : initDelay + oneDay;
- List<String> list1 = new LinkedList<String>();
- list1.add("第一个 :");
- List<String> list2 = new LinkedList<String>();
- list2.add("第二个 ");
- List<String> list3 = new LinkedList<String>();
- list3.add("第三个 ");
- //执行三个任务
- ScheduledFuture future = service.scheduleAtFixedRate(new RunnableTest(list1), initDelay, oneDay, TimeUnit.MILLISECONDS);
- service.scheduleAtFixedRate(new RunnableTest(list2), initDelay, oneDay, TimeUnit.MILLISECONDS);
- service.scheduleAtFixedRate(new RunnableTest(list3), initDelay, oneDay, TimeUnit.MILLISECONDS);
- }
- private static long getTimeMillis(String time) {
- // TODO Auto-generated method stub
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd");
- try {
- long fixedTime = dateFormat.parse(dayFormat.format(new Date())+" "+time).getTime();
- return fixedTime;
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return 0;
- }
- }
- package com.liu.test;
- import java.util.List;
- public class RunnableTest implements Runnable {
- private List<String> list;
- public RunnableTest() {
- }
- public RunnableTest(List<String> list){
- this.list = list;
- }
- @Override
- public void run() {
- // TODO Auto-generated method stub
- for(int i=0;i<10;i++){
- if(i%3 == 0){
- try {
- Thread.sleep(3000);
- System.out.println(list.get(0)+ "3 number +" + i);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- }
ScheduledExecutorService周期性的定时任务的更多相关文章
- 基于ScheduledExecutorService的并发定时任务处理能力测试
测试代码 定时器类 package business.util; import java.util.concurrent.Executors; import java.util.concurrent. ...
- java 线程池 ScheduledExecutorService
ScheduledExecutorService执行周期性或定时任务 https://blog.csdn.net/u013851082/article/details/70207640
- Linux的定时任务
分两种:一次性的定时任务.周期性的定时任务. 一次性的定时任务,又称at定时任务,命令为atd ,这里d是deamon的首字母,守护的意思,指守护进程:其实很多程序都是以d结尾,如httpd.memc ...
- ScheduledExecutorService--目前最理想的定时任务实现方式
ScheduledExecutorService 理想的定时任务实现方式 : 通过线程池的方式来执行任务的 可以灵活的设定第一次执行任务延迟时间 提供了良好的约定,以便设定定时执行的间隔时间代码实现: ...
- 定时任务莫名停止,Spring 定时任务存在 Bug??
Hello~各位读者新年好!这里楼下小黑哥给大家拜个年,祝大家蒸蒸日上烫烫烫,年年有余屯屯屯. 那年那 Bug 春节放假,小黑哥坐上高铁回家,突然想到一次生产问题.那是小黑哥参加工作第一年,那一年国庆 ...
- 定时任务莫名停止,Spring 定时任务存在 Bug?
专注于Java领域优质,技术欢迎关注 作者: 鸭血粉丝 来自:Java极客技术 Hello~各位读者新年好,我是鸭血粉丝(大家可以称呼我为「阿粉」).这里阿粉给大家拜个年,祝大家蒸蒸日上烫烫烫,年年有 ...
- SpringBoot集成Quartz实现定时任务
1 需求 在我的前后端分离的实验室管理项目中,有一个功能是学生状态统计.我的设计是按天统计每种状态的比例.为了便于计算,在每天0点,系统需要将学生的状态重置,并插入一条数据作为一天的开始状态.另外,考 ...
- Android开发 定时任务清理数据
原文地址:Android开发 定时任务清理数据 | Stars-One的杂货小窝 公司项目,需要整定时任务,对数据进行清理,需要在每天凌晨0:00进行数据的清理,使用了Alarm和广播的方式来实现 P ...
- 我终于会写 Java 的定时任务了!
前言 学过定时任务,但是我忘了,忘得一干二净,害怕,一直听别人说: 你写一个定时任务就好了. 写个定时任务让他去爬取就行了. 我不会,所以现在得补回来了,欠下的终究要还的,/(ㄒoㄒ)/~~ 定时任务 ...
随机推荐
- plupload如何限制上传文件数量,限制只能上传单个文件
1 完整代码 $(function() { $("#uploader").pluploadQueue({ runtimes : 'html5,gears,flash,silverl ...
- np.concatenate
- 清除JAVA 项目中的注释
package com.lookcoder.inschool.utils; import java.io.BufferedReader; import java.io.File; import jav ...
- mysql 中 int 等类型如何选择
详见:https://blog.csdn.net/samll_snail/article/details/86534719 .
- SQL多个逗号分开的字段值 取对应的数据名称信息
字段值 函数实现: )) ) as begin set @strs=','+@strs+',' ) ) set @str2='' declare SyncOrderCursor cursor for ...
- [LeetCode] 535. Encode and Decode TinyURL 编码和解码短网址
Note: This is a companion problem to the System Design problem: Design TinyURL. TinyURL is a URL sho ...
- CentOS的vsftp修改默认配置路径方法
修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可: 加入如下几行: local_root=/var/www/htmlchroot_local_user=YESanon_ ...
- 解决java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider
今天在集成Mapper时 出现如下错误 java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvi ...
- mysql 5.7 sql_mode设置 坑
原文地址:https://blog.csdn.net/u012259256/article/details/56482218 1.查看sql_mode select @@sql_mode查询出来的值为 ...
- 用js实现promise
/* 自定义promise 1. 执行MyPromise构造函数,要立即执行executor 2. promise实例对象,内部有三种状态 ...