Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行线程和控制这些线程的数量_Java_Multithreading_Spring Boot_Thread Safety - Fatal编程技术网

Java 执行线程和控制这些线程的数量

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;

首先,你应该知道我使用的是spring boot。我有一些请求,因此它必须同步执行,可能需要10秒。我知道spring会为每个请求创建新线程。所以对我来说没关系

在这里,我解释了为什么需要同步执行方法。我不确定这是否必要,但我认为这是必要的

此外,我想控制这些线程的数量,我将这样做:

@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您能以更精确的方式回答我的问题吗?我想你有类似的例子吗?