java并发编程10-异步模式
异步模式-工作线程
线程不足导致饥饿
有两个线程A,B,任务有两种,上菜和做菜,显然上菜要等待做菜,如果AB都在执行上菜,就没有更多的线程做菜了,这就导致了AB在死等,注意这不是死锁,
所以不同的任务类型应该用不同的线程池
创建多少线程
过小导致CPU不充分利用,过大导致上下文切换占用更多内存
CPU密集型运算
CPU核数+1个线程最好,+1是当某个线程由于缺页中断导致暂停的时候,额外的线程就能顶上去
IO密集型运算
核数* 期望CPU利用率 * (CPU计算时间+等待时间) / CPU计算时间
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Believe it!