线程池大小如何设置

线程池大小如何设置

线程池大小的设置需要根据具体的应用场景和系统资源进行考量。

  1. **CPU密集型任务:**这种任务消耗的主要是CPU资源,可以将线程设置为N(即CPU核心数)+1,比CPU核心数多出来的一个线程是为了防止线程偶发的缺页中断,或者其他原因导致的任务暂停而带来的影响。一旦任务暂停。CPU就会处于空闲状态,而在这种情况下多出来的一个线程就可以充分利用CPU的空闲时间。
  2. **I/O密集型任务:**这种任务应用起来,系统会用大部分时间来处理I/O交互,而线程在处理I/O交的时间段内不会占用CPU处理,这时就可以交出给其他线程使用,因此在I/O密集型任务的应用中,我们可以多配置一些线程,具体的计算方法是2N。

如何判断是CPU密集型任务还是I/O密集性任务:

CPU密集型任务简单理解就是利用CPU计算能力的任务比如在内存中对大量任务的数据进行排序。但凡涉及到网络读取,文件读取这类都是I/O密集型任务。这类任务的特点是CPU计算耗费的时间相比IO操作完成的时间来说很少。大部分时间都花在等待IO交互操作完成上。