一、简介
-
定时调度的
3
中实现方式- 通过
Timer
和Timetask
类,我们可以实现定时启动某个线程。 - 使用
ScheduledThreadPoolExecutor
-
Quartz
—— 一个开源框架,用作一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。( refer to other articles )-
quanz
底层原理就是这里的内容。
-
- 通过
二、类的介绍、实现方式
2.1
Timer、TimerTask
类的介绍
-
Timer
:Timer
类本身实现的就是一线程,只是该线程用来实现调用其它线程的。 -
TimerTask
:TimerTask
类是一个抽象类,该类实现了Runnable
接口,所以该类具备多线程的能力。 -
小案例:
class myTask extends TimerTask{ @Override public void run() { System.out.println("hello world"); } } public class TimerDemo { public static void main(String[] args) { //创建定时器对象 Timer timer = new Timer(); //在3秒后执行MyTask类中的run方法,后面每10秒跑一次 timer.schedule(new MyTask(), 3000, 10000); } }
-
注意点:
- 实际使用时,一个
Timer
可以启动任意多个TimerTask
实现的线程,但是多个线程之间会存在阻塞 - 如果多个线程之间需要完全独立的话,最好还是一个
Timer
启动一个TimerTask
的实现。
- 实际使用时,一个
-
-
总结:
有关原理 could refer to other articles
2.2、
ScheduledThreadPoolExecutor
-
一个任务调度线程池
public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor, implements ScheduledExecutorService { //…… }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。