Android 다 중 스 레 드 탱크 ThreadPool 의 원리 와 사용 을 완전히 분석 합 니 다.
6530 단어 AndroidThreadPool
목차
1.프로필
2.작업 원리
2.1 핵심 매개 변수 스 레 드 탱크 에 6 개의 핵심 매개 변수 가 있 는데 구체 적 으로 다음 과 같다.
상기 6 개의 매개 변수 설정 은 스 레 드 탱크 의 기능 을 결정 합 니 다.구체 적 인 설정 시기=스 레 드 탱크 류 대상 을 만 들 때 들 어 옵 니 다.
ThreadPoolExecutor 클래스=스 레 드 탱크 의 진정한 실현 클래스
개발 자 는 서로 다른 수요 에 따라 핵심 파 라 메 터 를 설정 하여 사용자 정의 스 레 드 탱크 를 실현 할 수 있 습 니 다.
//
//
Executor executor = new ThreadPoolExecutor(
CORE_POOL_SIZE,
MAXIMUM_POOL_SIZE,
KEEP_ALIVE,
TimeUnit.SECONDS,
sPoolWorkQueue,
sThreadFactory
);
//
public ThreadPoolExecutor (int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable workQueue>,
ThreadFactory threadFactory )
주:자바 에 자주 사용 하 는 스 레 드 탱크 4 가지 가 내장 되 어 있 습 니 다.(즉,핵심 매개 변 수 를 설정 하 였 습 니 다)자세 한 설명 은 다음 과 같 습 니 다.2.2 내부 원리 논리
스 레 드 탱크 가 실 행 될 때 다음 과 같은 작업 논 리 를 따른다.
3.사용 절차
스 레 드 탱크 의 사용 절 차 는 다음 과 같다.
// 1.
// , ,
Executor threadPool = new ThreadPoolExecutor(
CORE_POOL_SIZE,
MAXIMUM_POOL_SIZE,
KEEP_ALIVE,
TimeUnit.SECONDS,
sPoolWorkQueue,
sThreadFactory
);
// : Java , 4 ,
// 2. :execute()
// : Runnable
threadPool.execute(new Runnable() {
@Override
public void run() {
... //
}
});
// 3. shutdown()
threadPool.shutdown();
//
// a.
// b. interrupt() ( : )
// shutdownNow() :threadPool.shutdownNow()
// :
// shutdown: SHUTDOWN,
// shutdownNow: STOP, ,
// : shutdown() ; , shutdownNow()
4.흔히 볼 수 있 는 4 가지 기능 스 레 드 탱크매개 변수 에 따라 자바 에서 가장 흔히 볼 수 있 는 스 레 드 탱크 는 4 가지 가 있 습 니 다.
고정 라인 풀(FixedThreadPool)정시 스 레 드 풀(ScheduledThreadPool)캐 시 스 레 드 풀(CachedThreadPool)단일 라인 스 레 드 풀(Single ThreadExecutor)
즉,상기 4 가지 스 레 드 탱크 에 대해 자바 는 응용 장면 에 따라 핵심 파 라 메 터 를 설정 했다.
4.1 고정 라인 풀(Fixed ThreadPool)특징:핵심 라인&회수 되 지 않 음,라인 수량 고정,작업 대기 열 크기 제한 없 음(초 과 된 라인 작업 은 대기 열 에서 기다 림)응용 장면:제어 라인 최대 병발 수 구체 적 으로 사용:Executors.newFixed ThreadPool()을 통 해 예 시 를 만 듭 니 다.
// 1. & 3
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
// 2. Runnable &
Runnable task =new Runnable(){
public void run(){
System.out.println(" ");
}
};
// 3. :execute()
fixedThreadPool.execute(task);
// 4.
fixedThreadPool.shutdown();
4.2 정시 스 레 드 풀(ScheduledThreadPool)특징:핵심 스 레 드 수량 고정,비 핵심 스 레 드 수량 무제 한(유 휴 시 즉시 회수)응용 장면:정시/주기 적 작업 수행 사용:Executors.newScheduledThreadPool()을 통 해 예제 생 성:
// 1. & 5
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
// 2. Runnable &
Runnable task =new Runnable(){
public void run(){
System.out.println(" ");
}
};
// 3. :schedule()
scheduledThreadPool.schedule(task, 1, TimeUnit.SECONDS); // 1s
scheduledThreadPool.scheduleAtFixedRate(task,10,1000,TimeUnit.MILLISECONDS);// 10ms 、 1000ms
// 4.
scheduledThreadPool.shutdown();
4.3 캐 시 가능 스 레 드 풀(CachedThreadPool)특징:비 핵심 스 레 드,스 레 드 수량 만 고정 되 지 않 음(무한대 가능),남 은 스 레 드 를 유연 하 게 회수 할 수 있 음(시간 초과 체 제 를 갖 추고 있 으 며,모두 회수 할 때 시스템 자원 을 거의 차지 하지 않 음),새 스 레 드(스 레 드 없 이 사용 가능 할 때)모든 스 레 드 작업 이 도착 하면 즉시 실 행 됩 니 다.기다 릴 필요 가 없습니다.
응용 장면:대량의 스 레 드 작업 을 수행 합 니 다.사용:Executors.newCachedThreadPool()을 통 해 예제 만 들 기:
// 1.
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
// 2. Runnable &
Runnable task =new Runnable(){
public void run(){
System.out.println(" ");
}
};
// 3. :execute()
cachedThreadPool.execute(task);
// 4.
cachedThreadPool.shutdown();
//
// , 。
4.4 단일 라인 스 레 드 풀(Single ThreadExecutor)특징:하나의 핵심 스 레 드 만 있 습 니 다.(모든 작업 이 지정 한 순서에 따라 한 스 레 드 에서 실 행 될 수 있 도록 합 니 다.스 레 드 동기 화 문 제 를 처리 할 필요 가 없습니다)
응용 장면:동시 다발 에 적합 하지 않 지만 IO 차단 성과 UI 스 레 드 응답 에 영향 을 줄 수 있 는 작업,예 를 들 어 데이터 베이스 작업,파일 작업 등
사용:Executors.newSingleThreadExecutor()를 통 해 예제 만 들 기:
// 1.
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
// 2. Runnable &
Runnable task =new Runnable(){
public void run(){
System.out.println(" ");
}
};
// 3. :execute()
singleThreadExecutor.execute(task);
// 4.
singleThreadExecutor.shutdown();
4.5 흔히 볼 수 있 는 스 레 드 풀 정리&비교5.본 고 를 정리 하고 읽 은 후에 스 레 드 탱크&용법 을 잘 알 고 있다 고 믿 습 니 다.그 다음 에 저 는 안 드 로 이 드 개발 에서 다 중 스 레 드 에 관 한 지식 을 계속 설명 하 겠 습 니 다.구체 적 으로 Thread 류,Handler,HandlerThread 등 을 포함 하고 관심 이 있 으 면 Carson 에 계속 관심 을 가 질 수 있 습 니 다.호 안 드 로 이 드 개발 노트 도 우미/댓 글 좋아요!당신 의 격려 는 내 가 글 을 쓰 는 가장 큰 동력 이기 때 문 입 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.