В некоторых случаях нам нужно назначить различные пулы потоков для выполнения нескольких задач в проекте. Следовательно, различные задачи контролируются путем мониторинга различных пулов потоков. Чтобы достичь этого, в проекте должен быть настроен многопоточный пул.
Spring Boot обеспечивает простую и эффективную конфигурацию пула потоков и решения использования.
Конфигурация
Во -первых, настроить бобы пула потоков, которые будут переданы на управление пружиной:
@Configurationpublic class taskexecutepool {@bean (name = "threadpoola") publicpooltaskexecutormytaskasyncpool () {threadpooltaskexecutor executor = new ThreatpooltaskexeCutor (); Исполнитель.setCorePoolsize (4); Исполнитель.setMaxPoolsize (8); Исполнитель.setQueueCapacity (100); Executor.sepekebealiveSeconds (60); Исполнитель.setThreadNamePrefix ("Pool-A"); Исполнитель.setrejectedExecutionHandler (new ThreadPoolexeCutor.callerrunSpolicy ()); Исполнитель.initialize (); вернуть исполнитель; } @Bean (name = "threadpoolb") public threadpooltaskexecutorasyncpoolb () {threadpooltaskexecutor executor = new ThreadpooltaskexeCutor (); Исполнитель.setCorePoolsize (2); Исполнитель.setMaxPoolsize (4); Исполнитель.setQueueCapacity (8); Executor.sepekebealiveSeconds (60); Исполнитель.setThreadNamePrefix ("Pool-B"); // Политика, используемая, когда количество задач превышает MAXPoolSize и Queuecapanity. Эта политика состоит в том, чтобы вызвать поток задачи, чтобы выполнить executor.setrejectedExecutionHandler (new ThreadPoolexeCutor.callerrunSpolicy ()); Исполнитель.initialize (); вернуть исполнитель; }} использовать
Использование потоков требует только аннотации в методе выполнения, и класс метода должен быть определен как боб и передается для управления пружиной.
Вы можете использовать аннотации @component, @service и т. Д. На классе
@Async (value = "threadpoola") public void taska () {...} Проверьте количество активных потоков:
@Autowired private threadpooltaskexecutor threadpoola; // Имя переменной - это имя определенного имени пула. public void checkavtivethreadnum () {int num = threadpoola.getActiveCount ();}Конечно, есть и другие методы, поэтому я не приведу здесь никаких примеров.
Понимание каждого атрибута пула потоков:
CorePoolsize: представляет резьбу бассейна и количество потоков, открываемых при нормальных обстоятельствах.
Queuecapacity: Когда основные потоки выполняются задачи, здесь все еще есть дополнительные задачи, которые будут сохранены здесь.
maxpoolsize: если Queuecapacity заполнена, будет запущено больше потоков, пока количество потоков не достигнет MaxPoolsize. Если все еще есть задачи, это будет обработано в соответствии с политикой отказа.
Есть много стратегий отказа:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.