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
java的常用定时任务的几种方式的更多相关文章
- Java中HashMap遍历的两种方式
Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...
- JAVA中集合输出的四种方式
在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public stat ...
- java读取XML文件的四种方式
java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- java动态获取WebService的两种方式(复杂参数类型)
java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...
- java 实现md5加密的三种方式与解密
java 实现md5加密的三种方式 CreateTime--2018年5月31日15点04分 Author:Marydon 一.解密 说明:截止文章发布,Java没有实现解密,但是已有网站可以免费 ...
- Java 读取 .properties 文件的几种方式
Java 读取 .properties 配置文件的几种方式 Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 ...
- 遍历HashMap常用的的三种方式
遍历HashMap常用的的三种方式 HashMap是我们使用非常多的集合之一,下面就来介绍几种常用的HashMap的遍历方式. 1.首先定义一个新的HashMap,并往里面添加一些数据. HashMa ...
- Java执行groovy脚本的两种方式
记录Java执行groovy脚本的两种方式,简单粗暴: 一种是通过脚本引擎ScriptEngine提供的eval(String)方法执行脚本内容:一种是执行groovy脚本: 二者都通过Invocab ...
随机推荐
- pyqt设置窗口图标
import sys from PyQt5.QtWidgets import QMainWindow,QApplication from PyQt5.QtGui import QIcon ''' 窗口 ...
- spark load data from mysql
spark load data from mysql code first 本机通过spark-shell.cmd启动一个spark进程 SparkSession spark = SparkSessi ...
- 理解cookie
Cookie的有效期 Cookie的maxAge决定着Cookie的有效期,单位为秒(Second).Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写 ...
- get方法和post方法的区别?
get是从服务器上获取数据,post是向服务器传送数据,会新增资源或者修改已有资源,因此get一般用于查询,psot多用新增和修改: get和post在本质上来说没有多大区别,都是tcp链接,要说最大 ...
- win10右键打开PowerShell
win10右键打开PowerShell 转载自:http://www.xitongzhijia.net/xtjc/20170526/98756.html 如图: 1.首先在桌面新建一个txt文文件 复 ...
- 重要 | Spark和MapReduce的对比,不仅仅是计算模型?
[前言:笔者将分上下篇文章进行阐述Spark和MapReduce的对比,首篇侧重于"宏观"上的对比,更多的是笔者总结的针对"相对于MapReduce我们为什么选择Spar ...
- #10053 L 语言
L 语言 dalao 看来是水题?我可不这么认为. 很多人都写了我认为不怎么正确的贪心,那就是直接看到一个单词就减去. 那么这组数据就可以 hack 掉了: 2 1 whatis what whati ...
- C++语言学习之STL 的组成
STL有三大核心部分:容器(Container).算法(Algorithms).迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有S ...
- POI做题记录
嘿嘿,偷学一波! 由于博主做的题比较少,所以没按年份整理,直接按照做题时间放上来了. 2020年9月20日 [POI2013]LUK-Triumphal arch 给你一颗\(n\)个点的树(\(n\ ...
- Java_面向对象三大特征
面向对象特征 面向对象三大特征: 继承, 封装, 多态 继承 继承: 子类可以从父类继承属性和方法 对外公开某些属性和方法 要点(eclipse中Ctrl+T查看继承结构) 1.父类也称超类, 基类, ...