Я использую задачу Spring Async в своем приложении, и у меня есть проблема с задачей, которая требует всех ресурсов сервера.
В частности у меня такая конфигурация:
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(100);
executor.setQueueCapacity(100);
executor.initialize();
return executor;
}
И я использую задачу aync для трех методов, два очень простые и быстрые, но один сложный, потому что он создает процесс, в котором процедура Matlab занимает от нескольких секунд до нескольких минут и требует огромное количество ресурсов. Так что только для этой задачи я хотел бы иметь один поток и поставить в очередь все остальные запросы для последовательного выполнения.
С вышеупомянутой конфигурацией я управляю всеми потоками моего приложения, есть ли способ ограничить только определенный метод Async?
Если это невозможно, лучшим решением может быть использование семафора или ExecutorServices ?