线程池使用不当总结

1.拒绝策略设置不合理导致的线程无限阻塞等待问题

在这里插入图片描述
拒绝策略设置为 丢弃,如果再去 get 会一直阻塞

2. 线程池嵌套使用造成死锁

线程池内的线程又使用了线程池内的线程,父子线程相互等待:

假设 executorService 线程数最大为10
10个请求同时到达时,线程池被打满,子任务请求被迫进入阻塞队列
但是父任务的完成又依赖于子任务,这时由于子任务得不到线程,父任务无法完成
主线程执行join()进入阻塞状态,因为永远获取不到结果,永远无法恢复,造成服务故障

并行调用时一定要进行线程池隔离

猜你喜欢

转载自blog.csdn.net/itguangit/article/details/128017788