열, 스레드 풀의 합리적인 배분의 멀티 스레드 자바 기초

I. 배경

다른 이유 (IO 작업) 1 세대 차단 : 자주 요청, 데이터베이스를 읽고,이 발생할 수 있습니다 차단 순환 IO 작업입니다. 예를 들어 포스트 HTTP 요청은 별도의 스레드가되고 싶어요 것입니다. 작업은 run () 메소드의 코드 논리로 이해 될 수있다.

두, CPU를 많이 사용

CPU를 많이 사용하는 수단 작업을 방해하지 않고, 계산을 많이 필요로, 최고 속도 CPU 실행 .

CPU 집약적 인 작업 만 가능성이 진정한 멀티 코어 CPU에 (여러 스레드) 가속, 당신은 몇 가지 시뮬레이션을 열 수 있는지 여부 단일 코어에 CPU, 멀티 스레드 수, 작업이 가속화 될 수없는 전체 CPU 작업 때문에 이들에 대한 용량.

세, IO 집약적

IO 집약적 인 작업이 혼잡의 많은입니다 IO를 많이 필요로합니다. 단일 스레드에서 실행 IO 집약적 인 작업을 많이 낭비로 이어질 것 대기 낭비 CPU 파워를. 크게 실시간 싱글 코어 CPU에서 실행을 가속화 할 수있는 멀티 스레드 프로그램에서 IO 집약적 인 작업을 사용 그래서,이 가속은 주로 차단 시간의 사용이 낭비된다.

그런 다음 스레드 풀의 스레드 풀 크기를 설정하는 방법, 왼쪽 꼬리를 탐구한다.

스레드 풀 크기의 합리적인 배분에 먼저 작업의 특성을 분석해야한다, 그것은 다음과 같은 관점에서 분석 할 수 있습니다 :

1. 작업의 성격 : CPU를 많이 사용하는 작업, IO 집약적 인 작업, 하이브리드 임무.

2. 우선 순위 작업 : 높은, 중간 및 낮은.

3. 작업 실행 시간 : 긴, 중간 및 짧은.

4. 의존 작업 : 같은 데이터베이스 액세스와 같은 다른 시스템 자원에 의존하는 여부.

작업의 본질은 수행하는 스레드 풀의 다른 크기에 다를 수 있습니다.

작업의 서로 다른 성격의 경우, CPU 집약적 인 작업이 같은 CPU 하나의 수를 구성 할 스레드의 수와 같은 작은 스레드로 구성해야한다, IO 집약적 인 작업은, IO 작업 많은 스레드가 CPU를 차지하지 않는 구성해야 같은 일을 두 번 수 및 하이브리드 임무, 당신은 분할 할 수있는 경우 CPU 구성, IO를 많이 사용하고 CPU 집약적 인 처리로 분할 같은 스레드의 수를 증가한다, CPU가 은퇴하고 앉아 보자하지 마십시오, 각각 두 것을 제공 처리 시간은 큰 차이가있는 경우 시간의 실행은 분할 할 필요가 없습니다, 거의 같다.

작업은 데이터베이스 연결의 결과에 따라 작업과 같은 다른 시스템 자원에 대한 종속성이있는 경우,이 시간 이상 대기를 반환되면, 더 이상 CPU 유휴 시간, 스레드의 수를 더하기 위해 설정해야 더 큰 CPU를 사용.

물론, 구체적이고 합리적인 값 스레드 풀 크기, 시도 상대적으로 많은 수의 이전 법의 단지 요약 이상을 얻기 위해, 시스템의 실제 상황의 조합을 필요로한다.

스레드의 최적의 수 = ((쓰레드 쓰레드 CPU 시간 지연 +) / 쓰레드 CPU) * CPU 개수

CPU 코어는 그 추정치가 상기 식에 기초하여 얻어진 8, 예컨대 평균 CPU 시간으로 각 스레드는 0.5 초이며, 스레드는 1.5S로 타임 (예 IO 비 CPU 시간) 기다리고 ((0.5 + 1.5) / 0.5) * 32 = 8. 이 공식은 또한 변환된다 :

CPU의 최적의 = (쓰레드 CPU 시간 지연 비율 + 1 스레드) 스레드의 수 * 개수

결론을 도출 할 수 : 
스레드가 더 높은 비율 스레드에 더 많은 필요성을 기다립니다. CPU 시간 스레드의 비율이 높을수록, 적은 수의 스레드가 필요합니다. 
CPU 및 IO 집약적 인 작업의 수는 기본적으로 공식 위의 스레드 전에 설정합니다.

는 CPU를 많이 사용하는 경우 작업은 작은 스레드의 수, 아마 꽤 많은 CPU 코어 시스템을 구성하는 각각의 스레드에서 작업을 수행 할 수

IO 집약적 인이 때, 스레드의 대부분이 차단되어, 당신이 구성 멀티 스레드 수에 필요, 2 * CPU 감사

운영 체제 이름 설명 :

일부 진전이 다른 사람들이 내가 기다리고있는 동안, 컴퓨터에서 대부분의 시간을 보냈다 / O는 대부분의 시간을 보냈다

전자는이라고 계산 집약적 인 (CPU 집약적) 컴퓨터 바인딩, I / O를 집중적라고하며, I / O 바인딩.

넷째, 말

항상 믿음을 유지!

게시 된 122 개 원래 기사 · 원 찬양 64 ·은 50000 +를 볼

추천

출처blog.csdn.net/chenmingxu438521/article/details/103857850