JAVA线程-开启多少线程合适

为什么要使用多线程

我们评价一个操作系统性能好的系统往往是俩点低延迟、高吞吐。做到这俩点,往往需要一优化算法,二有效利用硬件。对于一不在此讨论的范畴,而硬件利用率大致往往分俩类,即cpu的利用率,和i/o的利用。
单线程时代:我们的程序往往是cpu和io设备相互配合执行,所以一个单线程的程序执行cpu操作时候io就要停下来等待cpu完成,为了提高io和cpu的利用率,操作系统为我们提供了多线程技术。
线程1处理cpu的计算,线程2处理io请求。处理玩io请求后在切换回来,这样利用率就得到了提高

线程多了就一定快么

针对我们程序的特点分为,io密集型和计算密集型俩种。如果io操作执行的比例比较大就是io密集型,如果cpu计算的比例比较大就是计算密集型。
在单核时代,对于计算密集型的业务增加线程反而会拖慢程序执行效率,因为只有一个核,所以同时只能有一个线程在运行,增加线程反而加大了线程切换的损耗。
在多核时代,对于计算密集型的业务是可以通过增加线程提高性能的,但是设置应该是cpu的核数+1,充分利用起cpu。
对于io密集型的业务,由于一般io的耗时比cpu要多的多,那么线程往往是cpu的核数*io耗时/cpu耗时+1。