一.任务调度概念

任务调度是指系统为了自动完成特定的任务,在约定的特点时间去执行任务的过程,解放人力需要做的事情。

调度方式:1多线程 2.timer,3.线程池 scheduleExecutorservice 4.quarts

区别在于前面3个只能间隔执行,qurats可以间隔,也可以在某个时刻执行。

二.实现的方式有:

1.多线程方式

package com.ljf.elastic.job.simple.task;import java.util.Date;public class ThreadTask  implements Runnable {@Overridepublic void run() {while(true) {System.out.println(new Date().getTime()+"定时任务");try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}}}
}
package com.ljf.elastic.job.simple.task;public class ThreadDemo {public static void main(String args[]){new Thread(new ThreadTask()).start();}
}

2.timer:

  第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行
*   意思是当程序获取执行权开始执行时,再按照dalay设置的延迟值,等待xx秒后执行,
*   period,表示按什么周期频率去执行。
package com.ljf.elastic.job.simple.task;import javax.xml.crypto.Data;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;public class TimerDemo {/***   第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行*   意思是当程序获取执行权开始执行时,再按照dalay设置的延迟值,等待xx秒后执行,*   period,表示按什么周期频率去执行。****/public static void main(String args[]){Timer t=new Timer();t.schedule(new TimerTask() {@Overridepublic void run() {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = simpleDateFormat.format(new Date());System.out.println(dateString+"定时任务");}},1000, 5000);}
}

3.线程池调度ScheduledExecutorService:

package com.ljf.elastic.job.simple.task;import java.time.LocalDateTime;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;/*** 使用第3种方式:使用周期性线程池调度ScheduledExecutorService*/
public class ThreadPoolSchedule {public static void main(String args[]){ScheduledExecutorService es= Executors.newScheduledThreadPool(10);es.scheduleAtFixedRate(new Runnable() {@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+" "+ LocalDateTime.now()+"do somethings");try {Thread.sleep(6000);} catch (InterruptedException e) {e.printStackTrace();}}},5,2, TimeUnit.SECONDS);}
}

4.第4种调度方式:使用qurats

package com.ljf.elastic.job.simple.task;import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;/*** 第4种调度方式:使用qurats*/
public class QurartsTask {public static void main(String args[]) throws SchedulerException {//创建一个scedulerSchedulerFactory schedulerFactory=new StdSchedulerFactory();Scheduler scheduler=schedulerFactory.getScheduler();//创建jobDetailJobBuilder jobBuilder=JobBuilder.newJob(MyJob.class);jobBuilder.withIdentity("jobname","nnd");JobDetail jobDetail=jobBuilder.build();//创建除非cronTrigger,支持按日历调度CronTrigger trigger=TriggerBuilder.newTrigger().withIdentity("mb","nd").startNow().withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")).build();//每2秒执行一次//创建间隔调度/**SimpleTrigger simpleTrigger=TriggerBuilder.newTrigger().withIdentity("aaa","bbb").startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();**/scheduler.scheduleJob(jobDetail,trigger);scheduler.start();}
}
package com.ljf.elastic.job.simple.task;import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;import java.time.LocalDateTime;public class MyJob  implements Job {@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {System.out.println(Thread.currentThread().getName()+" "+ LocalDateTime.now()+ "  do somethings");}
}

任务调度 的常用的基本方式相关推荐

  1. 框架原理第一讲,熟悉常用的设计方式.(以MFC框架讲解)

    框架原理第一讲,熟悉常用的设计方式.(以MFC框架讲解) 一丶什么是框架,以及框架的作用 什么是框架? 框架,简而言之就是把东西封装好了,使用框架开发可以快速开发程序,例如MFC程序的双击写代码. 为 ...

  2. ios多线程开发的常用三种方式

    ios多线程开发的常用三种方式 1.NSThread 2.NSOperationQueue 3.GCD NSThread: 创建方式主要有两种: [NSThread detachNewThreadSe ...

  3. 二维稳态热传导 代码实现_常用振动激励方式:稳态正弦 、瞬态和随机激振

    在测量机械设备或结构的振动力学参量或动态性能,如固有频率.阻尼.刚度.响应和模态等时,需要对被测对象施加一定的外力,让其作受迫振动或自由振动,以便获得相应的激励及其响应.激励方式通常可以分为稳态正弦激 ...

  4. 冷却水的循环方式有哪几种_关于钣金件常用的连接方式,你知道下列的哪几种...

    钣金件常用的连接方式 给大伙分享一下钣金件常用的五大连接方式: 一.翻边铆合 二.无铆钉连接(BTM) 三.拉钉铆合 四.电阻点焊 五.螺钉连接 一.翻边铆合 关于钣金件常用的连接方式,你知道下列的哪 ...

  5. 物联网常用的组网方式浅析

    一石激起千层浪,现代科技的网络革新可以变换着诸多行业的运作模式,甚至直接改变了我们的生活方式,网络技术与我们不再遥远与陌生.今天,小亿就带大家走近"LoRa"."Zigb ...

  6. js_组合继承(最常用的继承方式)

    <script type="text/javascript">//组合继承: 将原型链和借用构造函数的技术组合在一起//使用原型链实现对原型方法的继承//使用构造函数实 ...

  7. [css] css常用的布局方式有哪些?

    [css] css常用的布局方式有哪些? 1:圣杯布局 2:双飞翼 3:flex 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣一起通 ...

  8. CAD/CAM/CNC行业常用功能解决方式

    CAD/CAM/CNC行业常用功能解决方式 进行线切割的时候通常需要得到几何上的点:如何是直线段比较容易,但是对于圆弧.椭圆.曲线就需要调用专用的函数来解决了. 1.  得到Polyline(多义线) ...

  9. java regex match 替换_java正则表达式四种常用的处理方式(匹配、分割、替代、获取)...

    java 正则表达式高级篇,介绍四种常用的处理方式:匹配.分割.替代.获取,具体内容如下 package test; import java.util.regex.Matcher; import ja ...

最新文章

  1. struts(三)——struts框架实现登录示例
  2. 消除UITableView下面的额外分隔符
  3. 【SpringBoot】SpringBoot整合SpringDataJPA及基本使用
  4. sass使用相关报错
  5. 计算机应用基础山东大学,山东大学计算机应用基础
  6. erp生产管理系统流程_仁和ERP生产制造业ERP管理系统库存管理
  7. 【转载】6种.net分布式缓存解决方案
  8. Linux 内存管理之 SLUB分配器(3):Object分配逻辑
  9. 深入理解JVM-字节码
  10. 问题:TypeError: denoise_wavelet() got an unexpected keyword argument ‘method‘
  11. 深入理解Java内存模型的volatile语义
  12. 2022专转本计算机大类
  13. canvas教程16-滚动的车轮
  14. cadence Virtuoso ADE原理图库中的VCVS(压控电压源)使用
  15. 可以播放音乐的微信小程序源码(仿Apple音乐)
  16. php取FBOX数据,如何实现如下功能
  17. Linux手动安装和部署github
  18. 华科计算机学院硕士武汉理工推免,学霸宿舍升级版!这个学院5个宿舍20名成员集体保研...
  19. 我希望有个如你一般的人-张嘉佳
  20. flume采集hive日志写到hdfs问题

热门文章

  1. AR502H-CN开发笔记18:快速建立开发环境
  2. win7美化_极致美化 | 我们如何把 Windows「改造」成 mac OS
  3. C++输出小于N的所有素数
  4. 海量数据去重之SimHash算法简介和应用
  5. android修改checkbox样式边框颜色
  6. AI创业时代!这9个方向有钱途;AIGC再添霸榜应用Lensa;美团SemEval2022冠军方法分享;医学图像处理工具箱… | ShowMeAI资讯日报
  7. 十四、C指针详解(四):指针的指针
  8. 计算机pc at代表什么意思啊,PC/XT 与PC/AT的分别?
  9. [控制原理基础]浅谈PID算法
  10. scanf(3c,c);