경우에 따라 프로젝트에서 여러 작업을 실행하려면 다른 스레드 풀을 할당해야합니다. 따라서 다른 스레드 풀을 모니터링하여 다른 작업이 제어됩니다. 이를 달성하기 위해서는 멀티 스레드 풀을 프로젝트에서 구성해야합니다.
Spring Boot는 간단하고 효율적인 스레드 풀 구성 및 사용 솔루션을 제공합니다.
구성
먼저, 스레드 풀 콩을 스프링 관리로 넘겨 줄 수 있도록 구성하십시오.
@ConfigurationPublic 클래스 TaskexEcutePool {@bean (name = "ThreadPoola") public ThreadPooltasKexeCutorMytaskSyncPool () {ThreadPoolTasKexEcutor Executor = New ThreadPoolTaskexEcutor (); executor.setCorePoolSize (4); executor.setmaxpoolsize (8); executor.setqueuecapacity (100); executor.setKeepaliveseconds (60); executor.setThreadnamEprefix ( "pool-a"); executor.setRejectedExecutionHandler (new ThreadPooleExecutor.callerRunspolicy ()); executor.initialize (); 귀환 집행자; } @Bean (이름 = "ThreadPoolb") public ThreadPooltasKexeCutorAsyncPoolb () {ThreadPoolTasKexEcutor Executor = New ThreadPoolTasKexEcutor (); executor.setCorePoolSize (2); executor.setmaxpoolsize (4); executor.setqueuecapacity (8); executor.setKeepaliveseconds (60); executor.setThreadnamEprefix ( "pool-b"); // 작업 횟수가 MaxPoolSize 및 QueueCapacity를 초과 할 때 사용되는 정책. 이 정책은 실행자를 실행하는 작업 스레드를 호출하는 것입니다. executor.initialize (); 귀환 집행자; }} 사용
스레드를 사용하려면 실행 방법에 대한 주석 만 있으면되며 방법의 클래스는 Bean으로 정의되어 스프링으로 전달되어 관리해야합니다.
수업에서 주석 @Component, @Service 등을 사용할 수 있습니다.
@async (value = "ThreadPoola") public void taska () {...} 활성 스레드 수 확인 :
@autowired private stridepooltaskexecutor streadpoola; // 변수 이름은 정의 된 스레드 풀 bean 이름의 이름입니다. public void checkavtiveThreadnum () {int num = threadpoola.getActiveCount ();}물론 다른 방법이 있으므로 여기에는 예를 들어 보이지 않습니다.
스레드 풀의 각 속성 이해 :
CorePoolSize : 스레드 풀 코어 스레드를 나타내고 정상적인 상황에서 열린 스레드 수를 나타냅니다.
queuecapacity : 핵심 스레드가 작업을 실행할 때 여기에 저장 될 추가 작업이 여전히 있습니다.
maxpoolsize : queuecapacity가 가득 차면 스레드 수가 maxpoolsize에 도달 할 때까지 더 많은 스레드가 시작됩니다. 여전히 작업이있는 경우 거부 정책에 따라 처리됩니다.
거부 전략이 많이 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.