AbortPolicy,当请求线程数超出最大线程数,就会抛出RejectExecutionException。我想请问,多线程环境下,这种情况不是很多的吗,毕竟你没法提前知道到底需要多少线程。如果每次都抛异常程序还怎么正常运行呢?
AbortPolicy,当请求线程数超出最大线程数,就会抛出RejectExecutionException。我想请问,多线程环境下,这种情况不是很多的吗,毕竟你没法提前知道到底需要多少线程。如果每次都抛异常程序还怎么正常运行呢?
这个说的不是很准确,它在达到核心线程以后,就会去queue堆积数据,而不是直接创建非核心线程,所以你合理的线程池参数,甚至于压根就不会触发拒绝策略,或者你作死用无界队列,这都不会触发拒绝策略
如果实在是瞬间queue直接被堆积完并且立刻达到了最大线程,你所有任务又必须执行,可以自己实现拒绝策略,采用阻塞加入队列的方式,这样只是会阻塞,上面那哥们也把jdk的几种默认实现给说了
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
所以还有
CallerRunsPolicy
CallerRunsPolicy(调用者运行策略)
AbortPolicy(中止策略)
DiscardPolicy(丢弃策略)
DiscardOldestPolicy(弃老策略)
参考: https://cloud.tencent.com/dev...