자바 스 레 드 탱크 의 성장 과정 을 상세히 설명 하 다.

ThreadPoolExecutor 방식 으로 스 레 드 풀 을 만 듭 니 다.
ThreadPoolExecutor 구조 방법:

public ThreadPoolExecutor(int corePoolSize,
               int maximumPoolSize,
               long keepAliveTime,
               TimeUnit unit,
               BlockingQueue<Runnable> workQueue,
               ThreadFactory threadFactory,
               RejectedExecutionHandler handler) {
    //code...   
}
매개 변수의 의미:
  • 1.corePoolSize 는 스 레 드 탱크 의 스 레 드 수량,핵심 스 레 드 탱크 크기
  • 를 지정 했다.
  • 2.maximumPoolSize 는 스 레 드 탱크 의 최대 스 레 드 수량
  • 을 지정 했다.
  • 3.keepAliveTime 은 스 레 드 탱크 의 스 레 드 수량 이 corePoolSize 보다 많 을 때 더 많은 남 은 스 레 드 가 얼마 동안 삭 제 됩 니까?
  • 4.unit 시간 단위
  • 5.work Queue 작업 대기 열 은 제출 되 었 으 나 실행 되 지 않 은 작업 을 저장 하 는 데 사 용 됩 니 다.
  • 6.threadFactory 스 레 드 공장 은 스 레 드 를 만 드 는 데 사용 되 며,일반적으로 기본 값
  • 을 사용 할 수 있 습 니 다.
  • 7.handler 는 정책 을 거부 하고 임무 가 너무 많 을 때 임 무 를 어떻게 거절 합 니까?제출 퀘 스 트 수가 maximumPoolSize+를 초과 하면 work Queue 의 size 를 합 쳐 Rejected Execution Handler 에 게 임 무 를 맡 깁 니 다
  • 스 레 드 탱크 의 증가
    스 레 드 탱크 의 증 가 는 사용자 정의 스 레 드 탱크 를 만 들 때 설정 한 매개 변수 와 밀접 한 관 계 를 가지 고 오해 하기 쉬 운 corePoolsize 에 중심 을 두 고 설명 합 니 다. maximumPoolsize, workQueue 의 간관 계.
    먼저 그림 한 장 을 보고 성장 과정 을 이해 하 세 요.

    스 레 드 탱크 가 corePoolsize 보다 작 을 때 새로 제출 한 작업 은 새 스 레 드 를 만 들 고 작업 을 수행 합 니 다.이 스 레 드 탱크 에 빈 스 레 드 가 있 더 라 도.스 레 드 탱크 가 corePoolSize 에 도 달 했 을 때 새로 제출 한 작업 은 워 크 큐 에 들 어 갑 니 다.스 레 드 탱크 에서 작업 스케줄 이 실 행 될 때 워 크 큐 가 가득 차고 스 레 드 탱크하나의 작업 이 execute(Runnable)방법 으로 스 레 드 탱크 에 추가 하려 고 할 때:
    이 때 스 레 드 탱크 의 수량 이 corePoolSize 보다 적 으 면 스 레 드 탱크 의 스 레 드 가 비어 있 더 라 도 추 가 된 작업 을 처리 하기 위해 새로운 스 레 드 를 만들어 야 합 니 다.이 스 레 드 탱크 의 수량 이 corePoolSize 와 같 지만 버퍼 큐 워 크 큐 가 가득 하지 않 으 면 작업 은 버퍼 큐 에 들 어 갑 니 다.이 때 스 레 드 탱크 의 수량 이 corePoolSize 보다 많 으 면 버퍼 큐 가 가득 하고 스 레 드 탱크 의 수량 이 maximumPoolSize 보다 적 으 면 추 가 된 작업 을 처리 하기 위해 새로운 스 레 드 를 만 듭 니 다.이 때 스 레 드 탱크 의 수량 이 corePoolSize 보다 많 으 면 버퍼 큐 가 가득 하고 스 레 드 탱크 의 수량 이 maximumPoolSize 와 같 으 면 handler 가 지정 한 정책 을 통 해 이 작업 을 처리 합 니 다.즉,작업 을 처리 하 는 우선 순 위 는 핵심 스 레 드 코어 풀 사이즈,작업 대기 열 워 크 큐,최대 스 레 드 maximumPoolSize 입 니 다.세 가지 가 가득 차 면 Rejected Execution Handlier 를 사용 하여 거 부 된 작업 을 처리 합 니 다.(구체 적 으로 어떻게 처리 하 는 지 는 거부 전략의 범주 에 속한다)
    스 레 드 탱크 의 스 레 드 수량 이 core PoolSize 보다 많 을 때 특정한 스 레 드 의 남 은 시간 이 keepAliveTime 을 초과 하면 스 레 드 가 종 료 됩 니 다.이렇게 하면 스 레 드 탱크 는 연못 의 스 레 드 수 를 동적 으로 조정 할 수 있다.
    이상 은 자바 스 레 드 탱크 의 성장 과정 에 관 한 모든 지식 입 니 다.저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기