考虑一下来自Netty教程的这个例子(尽管我看到的不止一个这样的例子):
这里创建了两个独立的缓存线程池。但是为什么呢?如果它们是固定大小的,我可以理解使用多个线程池的目的,但缓存线程池不是。那么,如果可以不断扩展一个线程池,为什么还需要多个缓存线程池呢?实际上,只有一个线程池会更好吧?因为如果有两个不同的线程提交任务,那么空闲工作线程被利用的可能性更大。
我对此感到好奇,因为我正在为服务器编写网络部分,并且单独处理UDP和TCP连接。我想将处理任务分派给线程池,并考虑使用缓存线程池。但是,我不知道是否应该使用一个还是两个。
谢谢。
Executor bossPool = Executors.newCachedThreadPool();
Executor workerPool = Executors.newCachedThreadPool();
ChannelFactory channelFactory = new NioClientSocketChannelFactory(bossPool, workerPool);
这里创建了两个独立的缓存线程池。但是为什么呢?如果它们是固定大小的,我可以理解使用多个线程池的目的,但缓存线程池不是。那么,如果可以不断扩展一个线程池,为什么还需要多个缓存线程池呢?实际上,只有一个线程池会更好吧?因为如果有两个不同的线程提交任务,那么空闲工作线程被利用的可能性更大。
我对此感到好奇,因为我正在为服务器编写网络部分,并且单独处理UDP和TCP连接。我想将处理任务分派给线程池,并考虑使用缓存线程池。但是,我不知道是否应该使用一个还是两个。
谢谢。