자바 스 레 드 탱크 의 성장 과정 을 상세히 설명 하 다.
ThreadPoolExecutor 구조 방법:
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler) {
//code...
}
매개 변수의 의미:스 레 드 탱크 의 증 가 는 사용자 정의 스 레 드 탱크 를 만 들 때 설정 한 매개 변수 와 밀접 한 관 계 를 가지 고 오해 하기 쉬 운 corePoolsize 에 중심 을 두 고 설명 합 니 다. maximumPoolsize, workQueue 의 간관 계.
먼저 그림 한 장 을 보고 성장 과정 을 이해 하 세 요.
스 레 드 탱크 가 corePoolsize 보다 작 을 때 새로 제출 한 작업 은 새 스 레 드 를 만 들 고 작업 을 수행 합 니 다.이 스 레 드 탱크 에 빈 스 레 드 가 있 더 라 도.스 레 드 탱크 가 corePoolSize 에 도 달 했 을 때 새로 제출 한 작업 은 워 크 큐 에 들 어 갑 니 다.스 레 드 탱크 에서 작업 스케줄 이 실 행 될 때 워 크 큐 가 가득 차고 스 레 드 탱크
이 때 스 레 드 탱크 의 수량 이 corePoolSize 보다 적 으 면 스 레 드 탱크 의 스 레 드 가 비어 있 더 라 도 추 가 된 작업 을 처리 하기 위해 새로운 스 레 드 를 만들어 야 합 니 다.이 스 레 드 탱크 의 수량 이 corePoolSize 와 같 지만 버퍼 큐 워 크 큐 가 가득 하지 않 으 면 작업 은 버퍼 큐 에 들 어 갑 니 다.이 때 스 레 드 탱크 의 수량 이 corePoolSize 보다 많 으 면 버퍼 큐 가 가득 하고 스 레 드 탱크 의 수량 이 maximumPoolSize 보다 적 으 면 추 가 된 작업 을 처리 하기 위해 새로운 스 레 드 를 만 듭 니 다.이 때 스 레 드 탱크 의 수량 이 corePoolSize 보다 많 으 면 버퍼 큐 가 가득 하고 스 레 드 탱크 의 수량 이 maximumPoolSize 와 같 으 면 handler 가 지정 한 정책 을 통 해 이 작업 을 처리 합 니 다.즉,작업 을 처리 하 는 우선 순 위 는 핵심 스 레 드 코어 풀 사이즈,작업 대기 열 워 크 큐,최대 스 레 드 maximumPoolSize 입 니 다.세 가지 가 가득 차 면 Rejected Execution Handlier 를 사용 하여 거 부 된 작업 을 처리 합 니 다.(구체 적 으로 어떻게 처리 하 는 지 는 거부 전략의 범주 에 속한다)
스 레 드 탱크 의 스 레 드 수량 이 core PoolSize 보다 많 을 때 특정한 스 레 드 의 남 은 시간 이 keepAliveTime 을 초과 하면 스 레 드 가 종 료 됩 니 다.이렇게 하면 스 레 드 탱크 는 연못 의 스 레 드 수 를 동적 으로 조정 할 수 있다.
이상 은 자바 스 레 드 탱크 의 성장 과정 에 관 한 모든 지식 입 니 다.저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.