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

 
												

java的常用定时任务的几种方式的更多相关文章

  1. Java中HashMap遍历的两种方式

    Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...

  2. JAVA中集合输出的四种方式

    在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public stat ...

  3. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  4. java中数组复制的两种方式

    在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...

  5. java动态获取WebService的两种方式(复杂参数类型)

    java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...

  6. java 实现md5加密的三种方式与解密

      java 实现md5加密的三种方式 CreateTime--2018年5月31日15点04分 Author:Marydon 一.解密 说明:截止文章发布,Java没有实现解密,但是已有网站可以免费 ...

  7. Java 读取 .properties 文件的几种方式

    Java 读取 .properties 配置文件的几种方式   Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 ...

  8. 遍历HashMap常用的的三种方式

    遍历HashMap常用的的三种方式 HashMap是我们使用非常多的集合之一,下面就来介绍几种常用的HashMap的遍历方式. 1.首先定义一个新的HashMap,并往里面添加一些数据. HashMa ...

  9. Java执行groovy脚本的两种方式

    记录Java执行groovy脚本的两种方式,简单粗暴: 一种是通过脚本引擎ScriptEngine提供的eval(String)方法执行脚本内容:一种是执行groovy脚本: 二者都通过Invocab ...

随机推荐

  1. Linux命令之tab 键补全

    tab 键补全 tab 键可以实现命令及路径等补全,提高输入效率,避免出错 命令补全 用户给定的字符串只有一条惟一对应的命令,直接补全, 两次Tab会给出列表 内部命令: 外部命令:bash根据PAT ...

  2. DefenseCode宣布集成GitHub为开发人员提供SAST解决方案

    DefenseCode集团宣布,DefenseCode静态应用程序安全测试(SAST)ThunderScan解决方案现可作为一个GitHub Action,提供30多种语言的安全漏洞分析,并将详细的漏 ...

  3. 联赛模拟测试20 C. Weed

    题目描述 \(duyege\) 的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹. 为了查出真相,\(duyege\) 准备修好电脑之后再进行一次金坷垃的模拟实验. 电脑上面有若干层金坷垃,每次只能在 ...

  4. this.属性

    this是属于一个具体对象的,而不是属于一个类的. 当你创建了一个对象时,this自动的给你带过来了. this只能在类定义的方法中使用,不能在类定义的外部使用. class Person { //成 ...

  5. 接口中字段的修饰符:public static final(默认不写) 接口中方法的修饰符:public abstract(默认不写)abstract只能修饰类和方法 不能修饰字段

    abstract只能修饰类和方法 不能修饰字段

  6. Java8新特性探索之Optional类

    为什么引入Optional类? 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前 ...

  7. 4G工业路由器的传输功率是越高越好吗?

    现在人们越来越多的利用运营商网络进行家庭的Wi-Fi上网,早已是非常普遍的事情了.而无线路由器作为设备组网的重要组成部分,与路由器相关的话题.知识总会能够引发大家的热议.这里,以众山物联网研发.生产的 ...

  8. [UOJ 275/BZOJ4737] 【清华集训2016】组合数问题 (LUCAS定理的运用+数位DP)

    题面 传送门:UOJ Solution 这题的数位DP好蛋疼啊qwq 好吧,我们说回正题. 首先,我们先回忆一下LUCAS定理: \(C_n^m \equiv C_{n/p}^{m/p} \times ...

  9. [Luogu P2891/POJ 3281/USACO07OPEN ]吃饭Dining

    传送门:https://www.luogu.org/problemnew/show/P2891 题面 \ Solution 网络流 先引用一句真理:网络流最重要的就是建模 今天这道题让我深有体会 首先 ...

  10. AC86U kx上网

    AC86U收到很久了,为了能够kx上网免不了一番折腾. 准备 U盘一个, 读写速度要大于30M/s, 用于制作虚拟内存 步骤大致如下: 1.下载koolshare固件 我这里下载的是官改固件:http ...