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

在线等!线程池在项目中怎么使用的疑惑各位有什么建议?

在线等!线程池在项目中怎么使用的疑惑各位有什么建议?

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

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信