Spring Boot 설정 및 다 중 스 레 드 풀 사용 실현

어떤 경우 에 우 리 는 프로젝트 에서 여러 가지 임 무 를 서로 다른 스 레 드 탱크 에 배정 하여 집행 해 야 한다.따라서 서로 다른 스 레 드 탱크 를 감시 함으로써 서로 다른 임 무 를 제어 한다.이 목적 을 달성 하기 위해 서 는 프로젝트 에 다 중 스 레 드 풀 을 설정 해 야 합 니 다.
spring boot 는 간단 하고 효율 적 인 스 레 드 탱크 설정 과 사용 방안 을 제공 합 니 다.
배치 하 다.
우선 스 레 드 탱크 를 설정 한 bean 은 spring 관리 에 맡 깁 니 다.

@Configuration

public class TaskExecutePool {

 @Bean(name ="threadPoolA")

public ThreadPoolTaskExecutormyTaskAsyncPool() {

ThreadPoolTaskExecutor executor =new ThreadPoolTaskExecutor();
  executor.setCorePoolSize(4);

  executor.setMaxPoolSize(8);

  executor.setQueueCapacity(100);

  executor.setKeepAliveSeconds(60);

  executor.setThreadNamePrefix("Pool-A");

  executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

  executor.initialize();

  return executor;

 }

@Bean(name ="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.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

  executor.initialize();

  return executor;

 }

}
쓰다
스 레 드 를 사용 하려 면 실행 방법 에 주석 을 달 아야 하 며,이 방법의 종 류 는 반드시 bean 으로 정의 되 어야 하 며,spring 에 의 해 관리 되 어야 합 니 다.
클래스 에 주석@Component,@Service 등 을 사용 할 수 있 습 니 다.

@Async(value="ThreadPoolA")
public void taskA(){
 ...
}
스 레 드 활약 도 보기:

@Autowired
 private ThreadPoolTaskExecutor threadPoolA;//           bean   name   。

public void checkAvtiveThreadNum() {
  int num = threadPoolA.getActiveCount();
}
물론 다른 방법 도 있 지만,여 기 는 더 이상 예 를 들 지 않 는 다.
스 레 드 탱크 각 속성 이해:
core PoolSize:스 레 드 탱크 의 핵심 스 레 드 를 표시 하고 정상 적 인 상황 에서 열 리 는 스 레 드 수량 을 표시 합 니 다.
quueCapacity:핵심 스 레 드 가 모두 작업 을 달리 고 있 을 때 남 은 작업 이 여기에 저 장 됩 니 다.
max PoolSize:quueCapacity 가 가득 차 면 작업 이 더 많은 스 레 드 를 시작 합 니 다.스 레 드 수가 max PoolSize 에 도달 할 때 까지.임무 가 있 으 면 거부 전략 에 따라 처리 합 니 다.
거부 정책 은 여러 가지 가 있 습 니 다:
  • 작업 호출 스 레 드 로 실행
  • 이상 던 지기
  • 불필요 한 직접 포기
  • FIFO(먼저 나 가기)에 따라 대기 열 에 있 는 미 션 을 포기 합 니 다
  • 이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기