자바 스 레 드 탱크 프레임 워 크
예시
정의 스 레 드 인터페이스
public class MyThread extends Thread {
@Override
publicvoid run() {
System.out.println(Thread.currentThread().getName() + " ");
}
}
1:newSingleThreadExecutor
ExecutorService pool = Executors. newSingleThreadExecutor();
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
//
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
//
pool.shutdown();
입력 결과:
pool-1-thread-1
pool-1-thread-1
pool-1-thread-1
2:newFixedThreadPool
ExecutorService pool = Executors.newFixedThreadPool(3);
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
Thread t5 = new MyThread();
//
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
pool.shutdown();
입력 결과:
pool-1-thread-1
pool-1-thread-2
pool-1-thread-1
pool-1-thread-2
3 :newCachedThreadPool
ExecutorService pool = Executors.newCachedThreadPool();
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
Thread t5 = new MyThread();
//
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
//
pool.shutdown();
입력 결과:
pool-1-thread-2
pool-1-thread-4
pool-1-thread-3
pool-1-thread-1
pool-1-thread-5
4 :ScheduledThreadPoolExecutor
ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);
pool.scheduleAtFixedRate(new Runnable() {//
@Override
public void run() {
//throw new RuntimeException();
System.out.println("================");
}
}, 1000, 2000, TimeUnit.MILLISECONDS);
pool.scheduleAtFixedRate(new Runnable() {// ,
@Override
public void run() {
System.out.println("+++++++++++++++++");
}
}, 1000, 2000, TimeUnit.MILLISECONDS);
입력 결과:
================
+++++++++++++++++
+++++++++++++++++
+++++++++++++++++
3.스 레 드 탱크 핵심 매개 변수corePoolSize:연못 의 핵심 라인 수
maximum PoolSize:풀 에서 허용 하 는 최대 스 레 드 수 입 니 다.
keepAliveTime:스 레 드 수가 핵심 보다 많 을 때 종료 전 남 은 스 레 드 가 새 작업 을 기다 리 는 가장 긴 시간 입 니 다.
unit:keepAliveTime 매개 변수의 시간 단위.
workQueue:작업 을 수행 하기 전에 대기 열 을 유지 하 는 데 사 용 됩 니 다.이 대기 열 은 execute 방법 으로 제출 한 Runnable 작업 만 유지 합 니 다.
threadFactory:프로그램 이 새 스 레 드 를 만 들 때 사용 하 는 공장 입 니 다.
handler:스 레 드 범위 와 대기 열 용량 을 초과 하여 실행 이 막 혔 을 때 사용 하 는 처리 프로그램 입 니 다.
Thread PoolExecutor:Executors 류 의 밑바닥 실현.
3.1 퀘 스 트 정렬 메커니즘
SynchonousQueue:동기 화 대기 열 은 스 레 드 에 직접 제출 되 고 유지 되 지 않 습 니 다.이 때 스 레 드 풀 은 보통 무한 합 니 다.
링크 드 BlockingQueue:무한 대 열,스 레 드 탱크 스 레 드 수가 최대 수량 에 이 르 렀 을 때 새 작업 은 대기 열 에서 실 행 될 것 입 니 다.대기 열 이 무한 팽창 할 수 있 습 니 다.
Array BlockingQueue:경계 대기 열 이 있어 자원 소 모 를 방지 하 는 데 도움 이 됩 니 다.상한 선 에 도달 하면 새로운 작업 을 잃 어 버 릴 수 있 습 니 다.
주의:
new Single ThreadExecutor,new Fixed ThreadPool 은 링크 드 블록 링 큐 를 사용 합 니 다.
new Cached ThreadPool 은 SynchonousQueue 를 사용 합 니 다.
new Scheduled ThreadPool 은 Delayed WorkQueue 를 사용 합 니 다.
3.2 스 레 드 실행 절차
3.3 스 레 드 크기 확인:
cpu 밀집 형:스 레 드 를 최소 화하 고 최 적 스 레 드 수 Ncpu+1
io 밀집 형:다 중 스 레 드,2Ncpu
혼합 형:상황 에 따라 io 밀집 과 cou 밀집 으로 나 눌 수 있 습 니 다.
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.