java并发编程10-异步模式

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial

异步模式-工作线程

线程不足导致饥饿

有两个线程A,B,任务有两种,上菜和做菜,显然上菜要等待做菜,如果AB都在执行上菜,就没有更多的线程做菜了,这就导致了AB在死等,注意这不是死锁,
所以不同的任务类型应该用不同的线程池

创建多少线程

过小导致CPU不充分利用,过大导致上下文切换占用更多内存

CPU密集型运算

CPU核数+1个线程最好,+1是当某个线程由于缺页中断导致暂停的时候,额外的线程就能顶上去

IO密集型运算

核数* 期望CPU利用率 * (CPU计算时间+等待时间) / CPU计算时间

感谢您的阅读。 🙏 关于转载请看这里