线程池的四种拒绝策略
时间: 2023-10-24 17:26:48 浏览: 48
线程池的四种拒绝策略分别是:
1. AbortPolicy(中止策略):当线程池无法接受新任务时,会抛出一个拒绝执行的异常信息(RejectedExecutionException),中止任务的执行,并需要处理该异常。这是线程池的默认拒绝策略。
2. CallerRunsPolicy(调用者运行策略):当线程池无法接受新任务时,会使用调用线程直接执行任务。适用于并发较小、性能要求不高的场景,不允许任务失败。然而,如果任务提交速度过快,可能会导致程序阻塞,造成性能上的损失。
3. DiscardPolicy(直接丢弃策略):当线程池无法接受新任务时,直接丢弃当前任务,没有任何提示信息或处理。适用于对任务丢失无关紧要的场景,但需要注意任务的丢失可能会带来潜在的问题。
4. DiscardOldestPolicy(丢弃最老任务策略):当线程池无法接受新任务时,丢弃阻塞队列中最老的一个任务,并将新任务加入队列。适用于对任务响应时间要求较高的场景,丢弃最老任务可以腾出空间来执行新任务。
根据具体的业务场景和需求,可以选择合适的拒绝策略来处理无法接受新任务的情况。一般情况下,使用线程池时,默认采用的是AbortPolicy中止策略。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [线程池-四种拒绝策略总结](https://blog.csdn.net/alan_liuyue/article/details/120995601)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [Java线程池的四种拒绝策略](https://blog.csdn.net/a904364908/article/details/107489854)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]