返回章节

📝 第11章测试

定时任务线程池 - ScheduledThreadPoolExecutor

1 ScheduledThreadPoolExecutor相比Timer类的主要优势是什么?
正确答案:B
ScheduledThreadPoolExecutor支持多线程执行定时任务,避免了Timer单线程的局限性,并且单个任务的异常不会影响其他任务的执行。
2 scheduleAtFixedRate和scheduleWithFixedDelay的主要区别是什么?
正确答案:A
scheduleAtFixedRate按固定频率执行,不管上次任务是否完成;scheduleWithFixedDelay在上次任务完成后等待固定时间再执行下次任务。
3 在定时任务中,如果不处理异常会发生什么?
正确答案:B
如果定时任务中发生未捕获的异常,周期性任务会停止执行。这是为什么在定时任务中必须进行异常处理的重要原因。
4 ScheduledThreadPoolExecutor内部使用什么数据结构来管理定时任务?
正确答案:B
ScheduledThreadPoolExecutor内部使用DelayQueue来管理定时任务,按执行时间排序,确保最早执行的任务在队列头部。
5 以下哪种做法是定时任务的最佳实践?
正确答案:C
定时任务的最佳实践包括:在任务内部进行异常处理、避免长时间运行的任务、合理设置执行频率、监控任务执行等。