您何时要使用两个缓存的线程池?

Mar*_*ius 5 java multithreading threadpool

考虑一下Netty教程中的以下示例(尽管这不是我见过的唯一示例):

Executor bossPool = Executors.newCachedThreadPool();
Executor workerPool = Executors.newCachedThreadPool();
ChannelFactory channelFactory = new NioClientSocketChannelFactory(bossPool, workerPool);
Run Code Online (Sandbox Code Playgroud)

在这里创建两个单独的缓存线程池。但为什么?如果多个线程池的大小固定,我可以理解它们的用途,但是高速缓存的线程池不是。那么,如果只拥有一个不断扩展的缓存池,为什么还要拥有多个缓存的线程池呢?实际上,只拥有一个不是更好吗?因为如果您有两个不同的线程提交任务,那么这意味着更可能利用空闲的工作线程。

我对此很疑惑,因为我正在为服务器编写网络,并且正在分别处理UDP和TCP连接。我想将处理任务分派到线程池,并且我正在考虑为此使用缓存的线程池。但是,我不知道该使用一两个。

谢谢。

Eug*_*ene 0

一个池很可能用于接受初始请求,另一个池用于处理它