共计 829 个字符,预计需要花费 3 分钟才能阅读完成。
一、简介
-
定时调度的
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 {//……}
正文完