自定义线程池的缺点是什么?

What is the disadvantage of custom thread pool?

相对于自定义线程池,参考Oracle文档的source建议并行流时使用普通线程池。

由于公共线程池的线程数与 CPU 内核的数量相同,因此使用公共线程池和由与公共池相同数量的线程组成的自定义线程池有什么区别?

最好问一下,自定义线程池有什么好处?这是更多的工作,为什么要这样做?

处理器是一种全局资源。自定义线程池可以在不同的地方创建而无需任何协调,因此“over-allocate”处理器。

re-usable 库不应创建自定义线程池;如果您可以证明为什么需要自定义线程池,那么它应该在应用程序的更高级别进行管理。为了支持这一点,re-usable 库可能允许调用者配置(注入)自定义执行程序,并默认回退到公共线程池。

what's the difference between using a common thread pool and custom thread pool which consists of same number of threads with the common pool?

一些重要的考虑因素:

  1. 有了通用的线程池,你就不需要编写、维护、配置、管理自己的线程池了。

  2. 公共线程池存在并被使用,它已经提供了与内核一样多的线程。无论如何,没有比这更多的线程可以同时取得进展,所以如果你设置了一个自定义池并且它和公共池都完全订阅了 non-blocking 操作那么你会从额外的线程中产生额外的开销但不会加速。