多线程 程序完成指定任务,开启多少并发线程最合适

首先要考虑执行的任务是什么类型:
1、IO密集型
2、计算密集型

IO密集型:以大量任务读写数据库,读写文件为主,内存中的运算很少,线程基本阻塞在IO上面。这种情况下,尽量多开启一些线程并发做IO操作,因为在IO过程中,CPU几乎是闲置的。
计算密集型:任务以内存中的计算为主。这时候CPU是满负荷工作,即使开再多的线程,只会徒增线程上下午切换的成本。这种情况下,CPU是几核,就开几个线程。

线程数 = (IO时间 + CPU工作时间) / CPU工作时间 * 核数

IO密集型,相当于CPU工作时间无穷小的情况,这时候得到的线程数很大。
计算密集型,相当于IO时间无穷小,计算得的线程数约等于CPU核数。

你可能感兴趣的:(java,并发编程)