线程池应该是手动创建还是自动创建?
正确的创建线程池的方法:
根据不同的业务场景,自己设置线程池参数,比如我们的内存有多大,我们想给线程取什么名字等等
线程池里的线程数量设定为多少合适?
CPU密集型(加密,计算hash等):最佳线程数为CPU核心数的1-2倍左右
耗时IO型(读写数据库,文件,网络读写等等):最佳线程数一般会大于CPU核心数很多倍,显示JVM下线程监控显示繁忙为依据,保证线程空闲可以衔接上,参考Brain Goetz推荐的计算方法:
线程数= CPU核心数(1+平均等待时间/平均工作时间)
比如等待数据库100秒,平均工作时间1秒,
线程数 = CPU核心数(1+100/1) = 8*(101) =808