Java:线程池的最大线程数目

虽然没有强制规定,但是根据开发经验而言,线程池的最大线程数目分为以下情况:

1. 线程池用来执行CPU密集型任务

设置线程数为cpu核心数+1,这样可以使得每个线程都在执行任务。

首先说明:线程池管理的是逻辑上的“工作线程”,而不是直接控制物理CPU核心的使用。线程池不会自动将一个阻塞的线程移出池外,因为这个线程只是暂时不能执行任务,而并非不可用。

现在,假设以下情况:偶尔出现某个线程阻塞的时候,如果线程池线程数刚好为cpu核心数,则虽然有一个CPU空闲,但依然无法执行别的任务,而如果线程池线程数为cpu核心数+1,则新任务来的时候,会认为还有一个cpu核心空闲,可以执行任务。

2. 线程池用来执行IO密集型任务

大部分线程都阻塞,所以设置线程数为2*cpu核数。

理由也是类似的,IO密集型任务可能会导致更多的线程阻塞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值