Java定时任务Timer调度器【二】 多线程源码分析(图文版)
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 上一节通过一个小例子分析了Timer运行过程,牵涉的执行线程虽然只有两个,但实际场景会比上面复杂一些。 首先通过一张简单类图(只列出简单的依赖关系)看一下Timer暴露的接口。 为了演示Timer所暴露的接口,下面举一个极端的例子(每一个接口方法面向单独的执行线程),照样以闹钟为例( 源码只列出关键部分,下同 )。 public class ScheduleDemo { public static void main(String[] args) throws Exception { AlarmTask alarm1 = new AlarmTask("闹钟1"); AlarmTask alarm2 = new AlarmTask("闹钟2"); new Thread("线程1"){ public void run() { log.info("["+Thread.currentThread().getName()+"]调度闹钟1"); timer.schedule(alarm1,delay,period); } }.start(); new Thread("线程2"){ public void run() { log.info("["+Thread.currentThread().getName()+"