Executors和ThreadPoolExecutor两者的区别和联系
jdk中文文档 https://blog.fondme.cn/apidoc/jdk-1.8-google/
还可以的两个博客
线程池介绍 https://www.cnblogs.com/baizhanshi/p/5469948.html
并发包中的类 https://www.cnblogs.com/baizhanshi/p/7474564.html
面试题 https://www.cnblogs.com/baizhanshi/p/6641011.html
https://blog.csdn.net/qq_25806863/article/details/71126867
https://blog.csdn.net/hayre/article/details/53291712
SynchronousQueue
超出最大线程数量就会报错
LinkedBlockingDeque
会有一个任务队列,超过核心线程数量会放在任务队列中,如果任务队列有大小限制,
则超出的任务数量会去执行,但是线程运行的总数不会超过最大线程数量,如果超出则会出现异常
阿里巴巴 开发文档是 强制~
4. 【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样
的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。
说明: Executors 返回的线程池对象的弊端如下:
1) FixedThreadPool 和 SingleThreadPool:
允许的请求队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM。
2) CachedThreadPool 和 ScheduledThreadPool:
允许的创建线程数量为 Integer.MAX_VALUE, 可能会创建大量的线程,从而导致 OOM。