文章目录

定时线程池

由 笔尖 发布


sasdsadsad

用于处理定时任务

  • schedule:执行一次
  • scheduledAtFixedRate:任务开始后,delay后添加新的任务。
  • scheduledWithFixedDelay:任务执行完后,delay后添加新的任务。

w25s

DelayQueue内部封装了一个priorityqueue,根据time的大小进行排序(小顶堆),是一个无界队列。工作线程取出第一个任务,判断时间是否到期,如果是则执行。

相比Timer(一种单线程定时调度器),如果抛出异常,则整个线程销毁,不再执行任务,ScheduledThreadPoolExecutor任务抛出异常时,创建新线程,保持内部资源,但任务无法再自动提交,已经提交的任务也被清除。

coreprocessors为2时,提交一个定时任务,也只会让一个线程去处理任务,即使被堆积。因此定时线程池只是定时往队列里添加任务,而不是定时去执行任务。


暂无评论

发表评论