CS-Notes 学习笔记
面试最常问Java 后端 · Java 并发

线程池有哪些拒绝策略?怎样选择?

先自己想一想,再看参考要点

参考要点

  • AbortPolicy(默认)抛出 RejectedExecutionException,CallerRunsPolicy 由提交任务的线程自己执行,DiscardPolicy 直接丢弃,DiscardOldestPolicy 丢弃队列中最早的任务再提交
  • 不能丢且提交方能处理失败时用 Abort,能接受变慢时用 CallerRuns,Netty 的 I/O 线程这类不能阻塞的线程除外
  • 允许丢失的统计上报用 Discard,只关心最新数据时用 DiscardOldest
  • 线程池关闭后再提交,CallerRuns 会直接丢弃任务,submit() 返回的 Future 永远不会完成
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。