线程池的使用建议

博客指出创建线程池时,应避免使用Executor框架创建的线程池,如newFixedThreadPool等可能因队列过长或创建大量线程导致OOM,创建线程用的是系统剩余内存。同时强调创建线程池时核心线程数不宜过大,还提到相应逻辑发生异常时要处理。

一.尽量避免使用Executor框架创建的线程池

newFixedThreadPool newSingleThreadExcutor
允许的请求最大队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而导致OOM。

newCachedThreadPool newSchduledThreadPool
允许创建的线程池数量为Integer.Max_VALUE,可能会创建大量的线程,从而导致OOM

为什么第二个例子,在限定了堆的内存之后,还会把整个电脑的内存撑爆?
创建线城时用的内存并不是我们制定jvm堆内存,而是系统的剩余内存。(电脑内存-系统其它程序占用的内存-已经预留的jvm内存)

创建线程池时,核心线程数不要过大
如果过大,CPU切换的频率太高。

二 .相应的逻辑,发生异常时要处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值