22. 定时器用什么做的
Timer类的实现原理
请参考博文:https://blog.csdn.net/jijianshuai/article/details/78409381
Timer的两大缺陷:
1. Timer底层是使用一个单线来实现多个Timer任务处理的,所有任务都是由同一个线程来调度,所有任务都是串行执行,意味着同一时间只能有一个任务得到执行,而前一个任务的延迟或者异常会影响到之后的任务。
2. Timer中所有的任务都是在一个线程中执行,那么如果有一个定时任务在运行时,产生未处理的异常,那么当前这个线程就会停止,那么所有的定时任务都会停止,受到影响。
更好的定时任务实现:
JDK1.5后,ScheduledExecutorService
详细实现类是:ScheduledThreadPoolExecutor