Timer与TimerTask的真正原理
2018-04-02 16:40
351 查看
Timer和TimerTask的简单组合是多线程的嘛?不是,一个Timer内部包装了“一个Thread”和“一个Task”队列,这个队列按照一定的方式将任务排队处理,包含的线程在Timer的构造方法调用时被启动,这个Thread的run方法无限循环这个Task队列,若队列为空且没发生cancel操作,此时会一直等待,如果等待完成后,队列还是为空,则认为发生了cancel从而跳出死循环,结束任务;循环中如果发现任务需要执行的时间小于系统时间,则需要执行,那么根据任务的时间片从新计算下次执行时间,若时间片为0代表只执行一次,则直接移除队列即可。但是是否能实现多线程呢?可以,任何东西是否是多线程完全看个人意愿,多个Timer自然就是多线程的,每个Timer都有自己的线程处理逻辑,当然Timer从这里来看并不是很适合很多任务在短时间内的快速调度,至少不是很适合同一个timer上挂很多任务,在多线程的领域中我们更多是使用多线程中的:Executors.newScheduledThreadPool来完成对调度队列中的线程池的处理,内部通过new ScheduledThreadPoolExecutor来创建线程池的Executor的创建,当然也可以调用:Executors.unconfigurableScheduledExecutorService方法来创建一个DelegatedScheduledExecutorService其实这个类就是包装了下下scheduleExecutor,也就是这只是一个壳,英文理解就是被委派的意思,被托管的意思。
相关文章推荐
- java Timer与TimerTask的真正原理&使用介绍
- Timer与TimerTask的真正原理&使用介绍
- Timer与TimerTask的真正原理&使用介绍
- Timer与TimerTask的真正原理&使用介绍
- Timer与TimerTask的真正原理&使用介绍
- Timer与TimerTask的真正原理&使用介绍
- Timer和TimerTask 的真正原理&使用介绍
- Timer与TimerTask的真正原理&使用介绍
- android之Futuretask、Timer、AsyncTask的使用及原理解析
- Java Timer&TimerTask原理分析
- Timer&TimerTask原理分析
- Java Timer&TimerTask原理分析
- 线程同步及(【补】 Timer和TimerTask)
- spring中集成TimerTask执行定时任务
- java中使用线程实现Timer(定时器)原理和源码
- spring 定时器 (TimerTask and Quartz)
- Activity启动之SingleTask和onNewIntent的用法及原理
- Activity启动之SingleTask------onNewIntent的用法及原理
- .NET System.Timers.Timer的原理和使用(开发定时执行程序)
- Timer和TimerTask 定时任务