Java 限制在Spring(启动)中调用方法的线程数
我们有这样的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拦截器也不会
@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)
在方法中实现自定义逻辑。好问题,不管怎样,我会按照答案做。