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 ...
随机推荐
- spring-boot-route(二十二)实现邮件发送功能
在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...
- java刷题时常用容器详解
当初学java时,只是简单的把java基础知识过了一遍就跑去刷题了,很多知识都是在刷题的过程中慢慢加深理解的. 由于每次刷题时,刷到与容器有关的我基本上都跑去百度了,例如百度一下:java中List的 ...
- 手把手教你使用 cert-manager 签发免费证书
概述 随着 HTTPS 不断普及,越来越多的网站都在从 HTTP 升级到 HTTPS,使用 HTTPS 就需要向权威机构申请证书,需要付出一定的成本,如果需求数量多,也是一笔不小的开支.cert-ma ...
- windows下nginx中配置端口转发 ----本文来自转载
什么是端口转发 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 转载原文链接:https://www.cnblogs.com/chanshuyi/ ...
- Tomcat8升级后URL中特殊字符报错出现原因
请求带上花括号等字符,请求无法送达服务端,报错: Failed to load resource: the server responded with a status of 400 () https ...
- 线上问题排查,一不小心踩到阿里的 arthas坑了
最近帮新来的校招同学排查一个线上问题,问题本身不是很难,但是过程中踩到了一个arthas的坑,挺有意思的. 同时,也分享下在排查过程中使用的一些比较实用的工具,包括tcpdump.arthas.sim ...
- java的“同一”与“相等”
变量:引用(指向地址) + 值(该变量指向值所储存的那一片内存) 两个变量同一 : 判断 是否 这两个变量指向同一片内存. 两个变量相等 : 判断 是否 这两个变量的类型相同,且值相等. 注:常用的& ...
- Python3网络学习案例三:编写web server
1. 写在前面 这里总结的并不够详细,有时间了再进行补充. 2. 设计思路 HTTP协议是建立在TCP上的1. 建立服务器端TCP套接字(绑定ip,port),等待监听连接:listen(2. 打开浏 ...
- 在嵌入式设备中实现webrtc的第三种方式③
本系列的最后一篇,讲解收发音视频数据. 贴出最终效果: 其实很简单,直接调用writeFrame即可,如下图: 当然,这是部分代码,完整代码在下面,展开可见: 1 #include "com ...
- pytest框架执行自动化测试时使用pycharm正常运行,使用cmd或Terminal报错:Hint: make sure your test modules/packages have valid Python names.
问题描述: 使用pytest框架做接口自动化测试时,在测试用例所在的.py文件下使用pycharm的run功能可以正常跑用例,使用cmd运行窗口或Terminal则报下图中的错误: Hint: mak ...