线程池

本文深入探讨线程池原理,分析Future可能遇到的问题,包括取消、各种异常情况及处理策略。同时讨论数据库连接池与线程池的合理配置,针对不同场景给出建议,如IO密集型和CPU密集型应用的线程数设定。此外,对比了不同拒绝策略的优缺点,如AbortPolicy、CallerRunsPolicy、DiscardOldestPolicy和DiscardPolicy。

1、 理解线程池原理;


future可能出现的问题
1) 取消;
2) 异常:
2.1) 超时异常;
2.2) 中断异常;
2.3) 执行异常;

2、 数据库连接池要设置多少?

3、 线程池要设置多少?
io密集型一般设置为cpu数量*2
cpu密集型一般设置为cpu+1(多线程+主线程);

为什么加1呢?
我想应该可能是主线程;

corepool 50;
blockingquene 200;
max 500;(防止溢出;)
keepAliveSeconds:600;线程存活时间;


AbortPolicy:抛出异常;RejectedExecutionException;虚拟机不会关闭,程序处于阻塞状态;
只执行blockingquene+maxpoolThreads;
pool-1-thread-4 is running
pool-1-thread-4 is running
pool-1-thread-4 is running


CallerRunsPolicy:用调用者所在线程来执行当前任务,比如说调用者在main线程,缺点:没有了多线程,没有了任何意义;
全部执行完;
main is running
main is running
main is running
pool-1-thread-6 is running
pool-1-thread-6 is running
pool-1-thread-6 is running

 

DiscardOldestPolicy:不抛出异常;虚拟机关闭,不处于阻塞状态;
丢弃队列里最近的一个任务,并执行当前任务;
只执行blockingquene+maxpoolThreads;
pool-1-thread-3 is running
pool-1-thread-4 is running
pool-1-thread-4 is running


DiscardPolicy:直接丢弃当前任务,不处理;
只执行blockingquene+maxpoolThreads;
pool-1-thread-5 is running
pool-1-thread-5 is running
pool-1-thread-6 is running

 

转载于:https://www.cnblogs.com/gendway/p/10698493.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值