0
点赞
收藏
分享

微信扫一扫

线程池的线程数应该怎么配置?有哪几种常见的线程池?

一、线程池的线程数应该怎么配置?

线程在Java中属于稀缺资源,线程池不是越大越好也不是越小越好。任务分为计算密集型、IO密集型、混合型。

1. 计算密集型:大部分都在用CPU跟内存,加密,逻辑操作业务处理等。

2. IO密集型:数据库链接,网络通讯传输等。

一般的经验,不同类型线程池的参数配置:

1、计算密集型一般推荐线程池不要过大,一般是CPU数+1,+1是因为可能存在页缺失(就是可能存在有些数据在硬盘中需要多来一个线程将数据读入内存)。如果线程池数太大,可能会频繁进行上下文切换和任务调度。

获得当前CPU核心数代码如下:

Runtime.getRuntime().availableProcessors()1 ;

2、IO密集型:线程数适当大一些,机器核心CPU数量*2;

3、混合型:可以考虑根据情况将它拆分成CPU密集型和IO密集型任务,如果执行时间相差不大,拆分可以提升吞吐量,反之没有必要。

二、有哪几种常见的线程池?

常见的线程池主要有4种,都是通过工具类Excutors创建出来的,需要注意,阿里巴巴的《Java开发手册》里禁止使用这种方式来创建线程池。

线程池的线程数应该怎么配置?有哪几种常见的线程池?_数据


举报

相关推荐

0 条评论