假如正常的一个流程
* 读取数据库数据
* 处理数据
有必要为每个流程设置一个单独的线程池吗?
单独线程池
* 优点
* io线程阻塞不会影响cpu处理线程池
* 缺点
* 编程模型复杂,需要2次异步调用
* 对cpu不友好(假如一次读取20份数据,当20份数据都到达后才开始执行,cpu瞬间压力大)
* 那“为什么不来一份数据就开始执行呢?”,这样编程很不友好,至少在写java时是这样。future不支持回调通知
共用线程池(处理操作放在io线程中一起做掉)
* 优点:
* 编程模型简单,不需要2次异步操作
* 对cpu友好,不会突发执行很多任务
* 性能也会好一些(不需要在线程间传递数据)
* 缺点:
* 处理数据的逻辑不能被中断(不像io操作)
结论:如果处理任务很轻量,建议放在io线程中(netty也是这么做的)