gpt4 book ai didi

java - 管理 Spring 异步任务执行器中特定方法的线程执行数量

转载 作者:行者123 更新时间:2023-12-02 11:15:02 26 4
gpt4 key购买 nike

我在我的应用程序中使用 spring 异步任务,但我遇到了需要所有服务器资源的任务的问题。特别是我有这样的配置:

@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(100);
executor.setQueueCapacity(100);
executor.initialize();
return executor;
}

我在三种方法上使用 aync 任务,其中两种非常简单且快速,但一种很复杂,因为它创建了一个过程,其中 Matlab 例程需要几秒钟到几分钟的时间以及大量的资源。因此,仅对于此任务,我希望有一个线程并将所有其他请求放入队列中以实现顺序执行。
通过上面的配置,我管理应用程序的所有线程,有没有办法只限制特定的异步方法?如果不可能,最好的解决方案可能是使用 SemaphoreExecutorServices

最佳答案

您想要的是为特定的长时间运行任务创建另一个自定义线程池,这样它就不会阻止您的线程运行。

@Bean(name= "myExecutor")
public Executor getCustomAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(100);
executor.setQueueCapacity(100);
executor.initialize();
return executor;
}

并将其设置为您的异步方法:

@Async("myExecutor")

关于java - 管理 Spring 异步任务执行器中特定方法的线程执行数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50346762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com