Java 限制在Spring(启动)中调用方法的线程数

Java 限制在Spring(启动)中调用方法的线程数,java,spring,multithreading,spring-boot,interceptor,Java,Spring,Multithreading,Spring Boot,Interceptor,我们有这样的Spring引导服务: @Service public class XXXDataService { public XXXModel resolveData(){ } } resolveData方法从数据源获取数据并返回。通常,它可以同时处理多个请求数据的线程。但不能同时超过n个线程 是否有Spring内置解决方案来限制访问方法的线程数 类似于@Synchronized(MaxParallelAccess=10) 提示1:重要的是,所有其他Spring拦截器也不会

我们有这样的Spring引导服务:

@Service
public class XXXDataService {
    public XXXModel resolveData(){
    } 
}
resolveData
方法从数据源获取数据并返回。通常,它可以同时处理多个请求数据的线程。但不能同时超过
n个
线程

是否有Spring内置解决方案来限制访问方法的线程数

类似于
@Synchronized(MaxParallelAccess=10)

提示1:重要的是,所有其他Spring拦截器也不会触发
,例如,在方法不再被阻止之前,不应启动事务


提示2:我不想限制应用程序的线程总数,只想使用某种大小大于1的方法同步。

我认为Spring甚至Java都没有提供内置注释来实现这一点。但是这种逻辑可以通过
信号量来实现:

@服务
公共类XXXDataService{
专用信号量信号量=新信号量(10);
公共XXXModel resolveData(){
semaphore.acquire();
//…最多可由10个线程同时访问的逻辑
semaphore.release();
} 
}

我认为Spring并没有为此提供内置解决方案。通常我会限制使用
FixedThreadPool(n)
运行的线程数量,或者使用
信号量(n)
在方法中实现自定义逻辑。好问题,不管怎样,我会按照答案做。