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