zoukankan      html  css  js  c++  java
  • 定时任务--单点系统

     1 public class Demo01 {
     2     static long count = 0;
     3     public static void main(String[] args) {
     4         Runnable runnable = new Runnable() {
     5             @Override
     6             public void run() {
     7                 while (true) {
     8                     try {
     9                         Thread.sleep(1000);
    10                         count++;
    11                         System.out.println(count);
    12                     } catch (Exception e) {
    13                         // TODO: handle exception
    14                     }
    15                 }
    16             }
    17         };
    18         Thread thread = new Thread(runnable);
    19         thread.start();
    20     }
    21 }
    Thread线程定时任务
     1 /**
     2  * 使用TimerTask类实现定时任务
     3 */
     4 public class Demo02 {
     5     static long count = 0;
     6 
     7     public static void main(String[] args) {
     8         TimerTask timerTask = new TimerTask() {
     9 
    10             @Override
    11             public void run() {
    12                 count++;
    13                 System.out.println(count);
    14             }
    15         };
    16         Timer timer = new Timer();
    17         // 天数
    18         long delay = 0;
    19         // 秒数
    20         long period = 1000;
    21         timer.scheduleAtFixedRate(timerTask, delay, period);
    22     }
    23 
    24 }
    TimerTask
     1 public class Demo003 {
     2     public static void main(String[] args) {
     3         Runnable runnable = new Runnable() {
     4             public void run() {
     5                 // task to run goes here
     6                 System.out.println("Hello !!");
     7             }
     8         };
     9         ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
    10         // 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
    11         service.scheduleAtFixedRate(runnable, 1, 1, TimeUnit.SECONDS);
    12     }
    13 }
    线程池定时ScheduledExecutorService

     Quartz定时任务

    1、引入jar包

     1 <dependencies>
     2         <!-- quartz -->
     3         <dependency>
     4             <groupId>org.quartz-scheduler</groupId>
     5             <artifactId>quartz</artifactId>
     6             <version>2.2.1</version>
     7         </dependency>
     8         <dependency>
     9             <groupId>org.quartz-scheduler</groupId>
    10             <artifactId>quartz-jobs</artifactId>
    11             <version>2.2.1</version>
    12         </dependency>
    13     </dependencies>
    Pom.xml
    1 public class MyJob implements Job {
    2     public void execute(JobExecutionContext context) throws JobExecutionException {
    3         System.out.println("quartz MyJob date:" + new Date().getTime());
    4     }
    5 }
    定时任务
     1  //1.创建Scheduler的工厂
     2       SchedulerFactory sf = new StdSchedulerFactory();
     3       //2.从工厂中获取调度器实例
     4       Scheduler scheduler = sf.getScheduler();
     5 
     6 
     7       //3.创建JobDetail
     8       JobDetail jb = JobBuilder.newJob(MyJob.class)
     9               .withDescription("this is a ram job") //job的描述
    10               .withIdentity("ramJob", "ramGroup") //job 的name和group
    11               .build();
    12 
    13       //任务运行的时间,SimpleSchedle类型触发器有效
    14       long time=  System.currentTimeMillis() + 3*1000L; //3秒后启动任务
    15       Date statTime = new Date(time);
    16 
    17       //4.创建Trigger
    18           //使用SimpleScheduleBuilder或者CronScheduleBuilder
    19       Trigger t = TriggerBuilder.newTrigger()
    20                   .withDescription("")
    21                   .withIdentity("ramTrigger", "ramTriggerGroup")
    22                   //.withSchedule(SimpleScheduleBuilder.simpleSchedule())
    23                   .startAt(statTime)  //默认当前时间启动
    24                   .withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")) //两秒执行一次
    25                   .build();
    26 
    27       //5.注册任务和定时器
    28       scheduler.scheduleJob(jb, t);
    29 
    30       //6.启动 调度器
    31       scheduler.start();
    启动类调度

    cron表达示:http://cron.qqe2.com/

  • 相关阅读:
    centos 创建swap 交换分区
    nginx android app 慢网络请求超时
    使用docker toolbox 在windows上搭建统一环境
    Docker Volume 之权限管理(转)
    一次架构失误的反思
    Cannot connect to the Docker daemon. Is the docker daemon running on this host?
    docker-compose启动报错,解决方案
    php 执行程序分析
    继电器是如何成为CPU的(2)
    [每天默写一个算法]KMP
  • 原文地址:https://www.cnblogs.com/yuhuiqing/p/11785209.html
Copyright © 2011-2022 走看看