new threadpoolexcuter 什么触发拒绝策略
时间: 2023-06-24 10:07:44 浏览: 45
当任务提交给ThreadPoolExecutor时,线程池会根据其配置的参数进行任务分配和执行。如果线程池中的线程数量已经达到最大值,且任务队列也已经满了,那么新提交的任务就会触发拒绝策略。
在ThreadPoolExecutor中,可以使用以下四种拒绝策略:
1. AbortPolicy(默认):直接抛出RejectedExecutionException异常,阻止系统正常运行。
2. CallerRunsPolicy:只要线程池未关闭,该策略直接在调用者线程中,运行当前被丢弃的任务。
3. DiscardOldestPolicy:丢弃最老的一个请求,也就是即将被执行的一个任务,并尝试重新提交新的任务。
4. DiscardPolicy:不处理,直接丢弃掉当前的任务。
相关问题
new DelayedWorkQueue()拒绝策略是什么
`new DelayedWorkQueue()` 是 Java 中的一个延迟队列(Delayed Queue),它用于存储延迟执行的任务,并根据任务的延迟时间进行排序。当任务的延迟时间到达时,它们将被取出并执行。
在 DelayedQueue 中,如果添加的任务已经超过了队列的容量限制,就会触发拒绝策略。在 `new DelayedWorkQueue()` 中,默认的拒绝策略是抛出 `RejectedExecutionException` 异常,表示无法处理新添加的任务。
如果希望自定义拒绝策略,可以使用线程池的 `RejectedExecutionHandler` 接口。通过实现该接口并重写 `rejectedExecution` 方法,可以自定义拒绝策略,例如丢弃任务或者将任务添加到一个备用队列中等待执行。
java拒绝策略触发的条件
Java中的线程池在处理任务时,如果线程池中的线程已经全部被占用,新来的任务就会被放到任务队列中等待处理。如果任务队列也已满,则会触发拒绝策略。
Java中的拒绝策略有以下几种:
1. AbortPolicy:直接抛出RejectedExecutionException异常,阻止系统正常运行。
2. CallerRunsPolicy:只要线程池未关闭,该策略直接在调用者线程中,运行当前被丢弃的任务,也就是由调用线程处理该任务。
3. DiscardOldestPolicy:丢弃最老的一个请求,也就是即将被执行的一个任务,并尝试再次提交当前任务。
4. DiscardPolicy:直接丢弃任务,不予任何处理也不抛出异常。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)