首页 > 解决方案 > Springboot线程数不断增加

问题描述

我有这个springboot应用程序,它大量使用带有@Async注释的线程,我没有配置它,ThreadPoolTaskExecutor因为从我的想法来看,当线程说thread-1完成任务时,其他任务可以使用这个thread-1

但从我从日志中观察到的情况,似乎有时线程数会上升到数千个,如下所示:

2019-07-09 01:48:59.259  INFO 12592 --- [TaskExecutor-1] .s.d.r.c.TestingService :Something is running.
             ...... //Other threads running
2019-07-09 09:48:59.259  INFO 12592 --- [TaskExecutor-3432] .s.d.r.c.TestingService :Something is running.

我怀疑这些线程都没有被重用。

这是否意味着编号之前的那些线程3432没有被重用?还消耗内存?


更新

我实际上检查了日志,例如thread-255完成了,但是该线程中不再安排任何任务。

2019-07-08 22:23:37.407  INFO 1 --- [TaskExecutor-255] c.d.v.c.j.impl.LoadSomethingAsync       : Something is running

标签: javamultithreadingspring-bootasynchronous

解决方案


是的,它是无限的。默认情况下@Async取决于。SimpleAsyncTaskExecutor它在其文档中说

支持通过“concurrencyLimit”bean 属性限制并发线程。默认情况下,并发线程数是无限的。


推荐阅读