Java 执行线程和控制这些线程的数量
首先,你应该知道我使用的是spring boot。我有一些请求,因此它必须同步执行,可能需要10秒。我知道spring会为每个请求创建新线程。所以对我来说没关系 在这里,我解释了为什么需要同步执行方法。我不确定这是否必要,但我认为这是必要的 此外,我想控制这些线程的数量,我将这样做:Java 执行线程和控制这些线程的数量,java,multithreading,spring-boot,thread-safety,Java,Multithreading,Spring Boot,Thread Safety,首先,你应该知道我使用的是spring boot。我有一些请求,因此它必须同步执行,可能需要10秒。我知道spring会为每个请求创建新线程。所以对我来说没关系 在这里,我解释了为什么需要同步执行方法。我不确定这是否必要,但我认为这是必要的 此外,我想控制这些线程的数量,我将这样做: @Controller class SomeContoller { @Synchronized int threadsCnt = 0; final int LIMIT = 10;
@Controller
class SomeContoller {
@Synchronized
int threadsCnt = 0;
final int LIMIT = 10;
@PostMappin(...)
void someFunction() {
if (threadsCnt >= LIMIT) {
throw new LimitExceeded(...);
}
threadsCnt++;
execute synchronously method ~ 10 s.
threadCnt--;
}
你的问题是什么?如果我的方法可以解决这个问题?我不是弹簧专家。我想知道框架对您抛出的异常有何反应。。。对我来说这听起来很奇怪。你的理解有缺陷,spring没有创建线程,这些线程是由servlet容器创建和管理的。春天与此无关。如果要控制创建任务执行器的线程数量,请提交任务并使用返回的future等待结果。根据您的配置,它将容纳其他线程、对它们进行排队等。不要试图重新发明轮子,JDK和Spring已经有了解决方案。@M.Deinum您能以更精确的方式回答我的问题吗?我想你有类似的例子吗?