브러쉬 (20) 인터뷰 질문 : 및 스레드 풀 무엇에 계약?

의 image.png


자바는 스레드 풀 스레드, 관리를 단순화 스레드 자원의 활용도를 향상시킬 수 있습니다 제공.




모두 안녕하세요, 리 푸춘은 주제입니다, 해요 :


스레드 풀을 제공하는 자바? 어떻게 적절한 스레드 풀 크기를 설정하는 방법?


: A : 복잡한은 다음과 같습니다에있는 java.util.concurrent 패키지는 간단한에서 다섯 개 스레드 풀을 제공하는


무제한의 A, newSingleThreadExecutor (), 단일 스레드 풀, 작업자가 언제, 큐의 순서가 보장 큐 작업을 실행,


두 인 newFixedThreadPool (INT), 작업자 스레드 N, 내부 용 바운드 대기열되어 언제든지 스레드 풀의 고정 된 수,


세 newCachedThreadPool ()를 처리하는 많은 작업이 수행되는 짧은 시간 동안, 스레드 풀 캐시;


네, newWorkStealingPool (INT) 작업은 스레드 풀, java8 소개 내부 사용을 달성 ForkJoinPool 훔치는


일반 또는 정기 작업 처리에 적합, 오, 인 newScheduledThreadPool ()를




제대로 스레드 풀 크기를 설정하는 방법을?


특성에 대한 종합적인 컴퓨팅 작업이 필요합니다.
CPU 비용이 높은 핵심은 일반적으로 N은 (CPU 코어) 스레드 수 설정되어
많은 작업을 기다리고, N 스레드의 수에 설정되어있는 코어는 일반적으로 CPU 사용률 (1+ 평균 대기 시간 / 평균 실행 시간)


스레드 풀을 사용하는 동안 시, 주 5 점 :
1, 작업의 축적을 피하기 위해
과도한 스레드의 확대, 피할 누설 스레드 피하기 위해 2,,
, 잠금 장치의 모든 종류의 합리적인 사용을 피 교착 상태에 3;
4,의 ThreadLocal의 사용을 피;

의 image.png

스레드 풀 매개 변수


스레드 풀의 구조는 다음과 같습니다 :

의 image.png



파일


스레드의 5 종류의 처음 세의 사용을 피하기 위해 풀, 스스로 스레드 풀의 정확한 여섯 개 파라미터를 설정한다.


다음과 같은 이유를 들어 :


1, newSingleThreadExecutor ()는 작업 큐 쉽게 메모리 오버 플로우 문제가 발생할 한계 외부 바운드 형식의 큐, 작업 큐입니다.

 public static ExecutorService newSingleThreadExecutor() {
        return new FinalizableDelegatedExecutorService
            (new ThreadPoolExecutor(1, 1,
                                    0L, TimeUnit.MILLISECONDS,
                                    new LinkedBlockingQueue<Runnable>()));
    }


2 인 newFixedThreadPool (INT)는 작업 큐는 메모리 오버 플로우의 한계를 넘어 문제를 야기하기 쉽다 바운드 대기열이다;
 public static ExecutorService newFixedThreadPool(int nThreads) {
        return new ThreadPoolExecutor(nThreads, nThreads,
                                      0L, TimeUnit.MILLISECONDS,
                                      new LinkedBlockingQueue<Runnable>());
    }

3 newCacheThreadPool () 스레드의 최대 수를 쉽게 스레드의 누출을 초래할 너무 크고;

    public static ExecutorService newCachedThreadPool() {
        return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                      60L, TimeUnit.SECONDS,
                                      new SynchronousQueue<Runnable>());
    }

개요


Benpian 일반적인 자바 스레드 풀 및 스레드 풀 및 스레드 풀 모델의 매개 변수의 의미 분석에 응답,




다음 간략하게 설명하는 방법을 조정 매개 변수의 관심 우수한 스레드 풀뿐만 아니라 용도에 관한 것이다.

의 image.png

원래는 쉬운 일이 아닙니다, 소스를 표시하시기 바랍니다.

추천

출처www.cnblogs.com/snidget/p/12599523.html