zoukankan      html  css  js  c++  java
  • java的常用定时任务的几种方式

    Java基本的定时任务,一般有这几种方式:

    一、Timer
     1 public class Timer{
     2     static int index=0;
     3     public static void main(String[] args){
     4         Timer timer=new Timer();
     5             timer.schedule(new TimerTask() {
     6                 @Override
     7                 public void run() {
     8                     index++;
     9                     System.out.println("你好");
    10                     if (index>100){
    11                         timer.cancel();
    12                     }
    13                 }
    14             },0,1000);
    15     }      
    16 }
    
    
    
    
    

    通过往Timer提交一个TimerTask的任务,同时指定多久后开始执行以及执行周期,就可以周期执行任务。

    二、Threa线程

     1 public class ThreadTest implements Runnable{
     2     static int i=0;
     3     @Override
     4     public void run() {
     5         Boolean t=true;
     6         while (t){
     7             i++;
     8             try {
     9                 if (i<100) {
    10                     Thread.sleep(1000);
    11                     System.out.println("你好");
    12                 }else{
    13                     t=false;
    14                 }
    15             } catch (InterruptedException e) {
    16                 e.printStackTrace();
    17             }
    18         }
    19     }
    20     public static void main(String[] args){
    21         ThreadTest test=new ThreadTest();
    22         Thread t=new Thread(test);
    23         t.start();
    24     }

    通过创建一个线程,
    让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。

    三、Sping的@Scheduled注解定时

    1    @Scheduled(fixedDelay = 5000)
    2     public void note(){
    3         System.out.println("你好");
    4     }

    注解中指定的属性名称是fixedRate,是指以固定频率(周期)执行任务,这个周期是以上一个任务开始时间为基准。

    1     @Scheduled(cron="0 0 8 * * ?")
    2     public void note(){
    3         System.out.println("你好");
    4     }

    注解中指定的属性名称是cron,指定时调用,cron的参数依次指:

    •        秒(0~59)
    •   分钟(0~59)
    •   小时(0~23)
    •   天(月)(0~31,但是你需要考虑你月的天数)
    •   月(0~11)
    •   天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
    •   年份(1970-2099)

    四、分布式定时框架LTS

     LTS 源码地址: https://github.com/ltsopensource/light-task-scheduler

       实例源码:4种demo包括纯java、xml配置、注解配置、springboot

       LTS 代码例子地址:https://github.com/ltsopensource/lts-examples/tree/master/lts-example-jobclient 

     
     
  • 相关阅读:
    魔方
    js烟花特效
    面试cookie
    扩展日期插件
    通过javascript实现1~100内能同时被2和3整除的数并生成如下表格
    用三或四个个div标签实现工字效果
    2015_WEB页面前端工程师_远程测题_东方蜘蛛_1
    js公有、私有、静态属性和方法的区别
    Docker libnetwork(CNM)设计简介
    kubernetes,Docker网络相关资料链接
  • 原文地址:https://www.cnblogs.com/dinghaoran/p/11151056.html
Copyright © 2011-2022 走看看