提问,多线程,业务需求线程运行时间长会不会线程池满

weixin_38316591 2019-12-16 09:47:06
业务需求线程运行时间特别长,最短15分钟,最长半小时。请问这种情况下会不会导致线程池,数据库连接池连接耗尽,会不会导致线程阻塞。如果会的话应该怎么解决
...全文
219 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
宾灬 2019-12-18
  • 打赏
  • 举报
回复
说的不详细,线程运行最少15分钟,应该是io密集型任务。可以把线程池设置大一点。 数据库连接池耗尽,说明你的并发应该比较高而且查询数据库比较慢,导致连接被占用时间较长,其他线程不能获取到连接。 这个需要根据实际来考虑,如果并发量实在很高可以加机器做负载。如果数据库压力大也负载。
maradona1984 2019-12-16
  • 打赏
  • 举报
回复
请求多就会满,也许可以通过各种限制来限制请求
weixin_38316591 2019-12-16
  • 打赏
  • 举报
回复
引用 2 楼 qybao 的回复:
每个线程处理需要这么长时间,如果并发量大,那肯定会 线程处理时间长,从线程池来考虑提高性能没什么意义,要么就看看你的业务逻辑还能不能进一步优化,要么就考虑换一种处理方式,比如改成异步通信
异步不可用的情况下才使用的线程。
weixin_38316591 2019-12-16
  • 打赏
  • 举报
回复
引用 1 楼 l836064518 的回复:
不指定线程池并且并发过高的话会造成性能下降,就是会很卡处理很慢。可以设置最大线程池以及设置线程队列、线程池策略等
设置了最大线程池,应该不会有高并发的情况,用户量有限。还有其他需要注意的吗
qybao 2019-12-16
  • 打赏
  • 举报
回复
每个线程处理需要这么长时间,如果并发量大,那肯定会
线程处理时间长,从线程池来考虑提高性能没什么意义,要么就看看你的业务逻辑还能不能进一步优化,要么就考虑换一种处理方式,比如改成异步通信
l836064518 2019-12-16
  • 打赏
  • 举报
回复
不指定线程池并且并发过高的话会造成性能下降,就是会很卡处理很慢。可以设置最大线程池以及设置线程队列、线程池策略等

67,511

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧