我将 Spring 的 Java 配置与 AsyncConfigurer 一起使用:
@Configuration
@EnableAsync
public class AppConfig implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(2);
executor.setQueueCapacity(10);
executor.setThreadNamePrefix("MyExecutor-");
executor.initialize();
return executor;
}
}
现在假设我有一个带有 @Async 注释的方法,并假设它已经调用了 2 次并且 2 个线程仍在运行。根据我的理解,对它的任何新调用都将添加到容量为 10 的队列中。现在如果我收到第 11 个任务,它的行为会是什么?它会拒绝此处所述的任务:https ://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html ?还是调用者会等待队列槽变空?
我的要求是不要执行使用@Async 方法生成的固定数量的线程,并在达到最大线程数时让调用者等待。如果我将 ConcurrentTaskExecutor 与特定大小的固定线程池一起使用,这会实现吗?
慕工程0101907
侃侃尔雅
慕哥9229398
随时随地看视频慕课网APP
相关分类