任务定时调度

通过Timer和Timetask,我们可以实现定时启动某个线程。

java.util.Timer

在这种实现方式中,Timer类作用是类似闹钟的功能,也就是定时或者每隔一定时间触发一次线程。其实,Timer类本身实现的就是一个线程,只是这个线程是用来实现调用其它线程的。

java.util.TimerTask

TimerTask类是一个抽象类,该类实现了Runnable接口,所以该类具备多线程的能力。

在这种实现方式中,通过继承TimerTask使该类获得多线程的能力,将需要多线程执行的代码书写在run方法内部,然后通过Timer类启动线程的执行。

java.util.Timer的使用

public class TestTimer {
public static void main(String[] args) {
Timer t1 = new Timer();//定义计时器;
MyTask task1 = new MyTask();//定义任务;
t1.schedule(task1,3000); //3秒后执行;
//t1.schedule(task1,5000,1000);//5秒以后每隔1秒执行一次!
//GregorianCalendar calendar1 = new GregorianCalendar(2010,0,5,14,36,57);
//t1.schedule(task1,calendar1.getTime()); //指定时间定时执行;
}
} class MyTask extends TimerTask {//自定义线程类继承TimerTask类;
public void run() {
for(int i=0;i<10;i++){
System.out.println("任务1:"+i);
}
}
}

执行结果如图:

运行以上程序时,可以感觉到在输出之前有明显的延迟(大概就是3秒!)。还有几个方法,自己试试吧!

在实际使用时,一个Timer可以启动任意多个TimerTask实现的线程,但是多个线程之间会存在阻塞。所以如果多个线程之间需要完全独立的话,最好还是一个Timer启动一个TimerTask实现。

===========

@Scheduled注解

https://www.jianshu.com/p/1defb0f22ed1

Springboot整合异步定时任务

https://blog.csdn.net/qq_32447301/article/details/84668865

spring boot 自带的定时任务,时间表达式中代表周几的一些坑。。

https://blog.csdn.net/z1040141848/article/details/96973459

springboot 集成 quartz 动态实现定时任务

实际开发中,我们可以使用开源框架quanz,更加方便的实现任务定时调度。实际上,quanz底层原理就是我们这里介绍的内容。

https://blog.csdn.net/z291197968/article/details/82351471

最新文章

  1. the usage of map.put
  2. 瓜娃《guava》api快速入门
  3. struts2中改变struts.xml默认路径
  4. OC10_数组的内存管理
  5. linux安全加固
  6. 详解集群内Session高可用的实现原理
  7. java中的序列化流和反序列化流
  8. ASP.NET VS2013 Office 转 PDF
  9. powerDesigner生成数据结构图以及对应sql导出方法
  10. 【spring boot】idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到(转)
  11. spark批量写写数据到Hbase中(bulkload方式)
  12. 几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
  13. liunx上安装MySQL一个非常简单的方法
  14. Docker学习笔记之在开发环境中使用服务发现
  15. 【转】mysql优化步骤
  16. C# 结构体 struct
  17. mac 安装android sdk
  18. vim 编辑 windows下的文本时出现乱码, 修改配置后 已解决
  19. .net core 中 identity server 4 之Topic --定义API资源
  20. 如何将Emmet安装到Notepad++?

热门文章

  1. 算法的时间复杂度O
  2. jvm 命令使用调优 通过jstat、jmap对java程序进行性能调优
  3. 单例模式:Java单例模式的几种写法及它们的优缺点
  4. jmeter配置元件之计数器
  5. C# 使用 Dapper 实现 SQLite 增删改查
  6. Exception in thread &quot;main&quot; brut.androlib.AndrolibException: Could not decode arsc file at brut.androlib.res.decoder.ARSCDecoder.decode
  7. osg塔吊模拟-20191026
  8. Flutter Form正确使用方法【可正确获取提交的表单数据】
  9. Spring cloud微服务安全实战-3-11API安全机制之登录
  10. easyUIDataGrid对象返回值