为了账号安全,请及时绑定邮箱和手机立即绑定

有没有童鞋遇到过同样的问题:线程池在项目中怎么使用的疑惑怎么回事哈啊?

有没有童鞋遇到过同样的问题:线程池在项目中怎么使用的疑惑怎么回事哈啊?

长风秋雁 2019-08-11 14:22:34
在网上搜索,都只会讲类似使用ExecutorServices=Executors.newFixedThreadPool(5);这种方式来创建我想问的是:在一个请求需要处理很复杂的运算时,使用线程池,那么是直接在方法里面new一个出来,使用完之后关闭掉?还是使用单例模式创建一个全局的线程池.我不是很理解这个如果说每次请求new一个线程池出来的话,在高并发下,是不是存在很多个线程池,那么内存应该会溢出的啊.但如果只创建一个线程池,在高并发下,无数的请求都排队使用那几个固定的线程,不是更慢了吗?java里面每个web请求过来都是一个线程,不使用线程池的话,自己的线程处理自己的事情,比所有请求共用一个线程池快得多吧.我不知道我这么想对不对.但是我使用apache的ab同时请求1000次的话,不使用线程池比使用单例的线程池快很多很多.希望大佬来帮小弟解惑.
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

通常我的使用方式是静态变量:
publicstaticfinalExecutorServices=Executors.newFixedThreadPool(5);
.对于你后面说的效率问题,和你的线程池配置有很大关系,假设你的请求为1000个,那么如果你使用线程数为5的线程池当然会比直接new1000个线程来处理更慢.
在我的理解,线程池是用来管理线程的生命周期的,节省的是创建销毁线程的一部分时间,而和能否加快业务处理时间关系不大.具体的配置需要根据请求量来进行一些参数的配置.
                            
查看完整回答
反对 回复 2019-08-11
  • 2 回答
  • 0 关注
  • 327 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号