자바 스 레 드 탱크 프레임 워 크

1.스 레 드 탱크 구조 도

예시
정의 스 레 드 인터페이스

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 밀집 으로 나 눌 수 있 습 니 다.
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

좋은 웹페이지 즐겨찾기