序言
我们日常开发中,用的线程池场景多吗?
程序员老9:没用过
程序员老6:很少用
大多数开发者的业务应用场景是数据量大,需要并发处理,提升效率
线程池怎么用
程序员老6:网上一搜,一大堆答案,复制、粘贴、测试、搞定
你有没有想过,线程不够用,怎么办,如何设置线程数,我网上有很少给你讲解这些问题,知识告知你怎么使用,如何更好的使用却没有讲。
线程池实践方案(推荐)
@Configuration
public class ThreadPoolTaskExecuteConfig {
@Bean
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(5);
taskExecutor.setMaxPoolSize(10);
taskExecutor.setQueueCapacity(50);
taskExecutor.setKeepAliveSeconds(60);
taskExecutor.setThreadNamePrefix("myExecutor--");
taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
taskExecutor.setAwaitTerminationSeconds(60);
taskExecutor.setRejectedExecutionHandler(new CompositeRejectedHandler());
taskExecutor.initialize();
return taskExecutor;
}
}
线程池参数配置:
没有绝对合理公式提供你计算线程数应该配置多少是最合适的,只有通过实践中进行调整
- 增加线程监控
- 自定义拒绝策略,进行日志打印以及使用由线程发起者进行调用
其它方案
- 放入队列,重新提交到线程池进行执行
- 进行睡眠,再次执行
- 直接抛出异常
- 创建新线程处理
总结
没有最好的方案,只有适合自己的方案,才是好的方案
线程池中队列满了,线程不够用,你是怎么处理,欢迎你留言评论
预告明天分享内容
nacos源码中你学习到什么
- 代码规范
- 线程池用法
- nacos是如何服务注册
- nacos是如何解决同一个服务注册与删除冲突问题
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END
















暂无评论内容