广东石油化工建设集团公司网站,外贸公司网站案例,网站建设工具有哪些品牌,网站开发和网站建设有什么不同RejectedExecutionHandler#xff08;饱和策略#xff09;#xff1a;当队列和线程池都满了#xff0c;说明线程池处于饱和状态#xff0c;那么必须采取一种策略处理提交的新任务。
这个策略默认情况下是AbortPolicy#xff0c;表示无法处理新任务时抛出异常。
在JDK 1…RejectedExecutionHandler饱和策略当队列和线程池都满了说明线程池处于饱和状态那么必须采取一种策略处理提交的新任务。
这个策略默认情况下是AbortPolicy表示无法处理新任务时抛出异常。
在JDK 1.5中Java线程池框架提供了以下4种策略。
拒绝策略功能ThreadPoolExecutor.AbortPolicy(默认)直接抛出RejectedExecutionException来拒绝新任务的处理。ThreadPoolExecutor.DiscardPolicy不处理丢弃掉。ThreadPoolExecutor.DiscardOldestPolicy丢弃队列里最近的一个任务并执行当前任务。ThreadPoolExecutor.CallerRunsPolicy不进入线程池执行,任务将由调用者线程去执行。也就是直接在调用execute方法的线程中运行被拒绝的任务。如果执行程序已关闭则会丢弃该任务。当最大池被填满时此策略为我们提供 可伸缩队列。因此这种策略会降低对于新任务提交速度影响程序的整体性能。如果您的应用程序可以承受此延迟并且你要求任何一个任务请求都要被执行的话你可以选择这个策略。自定义策略以根据应用场景需要来实现RejectedExecutionHandler接口自定义策略。如记录日志或持久化存储不能处理的任务。
-----------------------------------------------------------------------------摘自 书名Java并发编程的艺术 作者方腾飞魏鹏程晓明