2014-12-05 3 views
0

내 시스템은 7 코어 CPU 시스템입니다. 방금 아래 프로그램을 실행 해 보았습니다.멀티 스레딩에서 모든 프로세서 사용이 100 %가되는 방법

for(int i=0;i<10; i++) 
{ 
     new Thread(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       while (true) 
       { 

       } 
      } 
     }).start();; 
    } 

이제 전체 CPU 사용량이 100 % (7 코어 100 %)입니다. 여기에 10 개의 스레드가 하나의 Process javaw.exe에 있습니다. 내 CPU 코어 전체에서 어떻게 분리 되었습니까?

단일 프로세스가 여러 코어에서 실행될 수 있는지 여부 또는 Java 구현이 여러 프로세서에서 스레드를 제공하는지 여부

+0

코어 CPU 7 개? 결코 들어 본적이 없다. –

+2

사이드 노트. 인텔 i7 프로세서에는 7 개의 코어가 없습니다 – arunmoezhi

+0

@arunmoezhi Oh. 내게 새로운 정보 .. 고마워. – Sangeeth

답변

1

예, 동일한 프로세스의 여러 스레드를 여러 CPU로 분할 할 수 있습니다. 많은 응용 프로그램에서 다중 스레드를 사용하는 것이 중요합니다.

대부분의 현재 JVM 구현은이 (하나의 Java 스레드 - 하나의 OS 스레드)에 대해 원시 OS 스레드를 사용하므로 운영 체제에서 모두 수행합니다. 대안은 "green threads"이며 JVM은 수동으로 실행을 예약합니다. 이것은 "실제"쓰레드가없는 아키텍처 나 OS에있어 과거의 일로 보입니다.

0

필자가 아는 바로는 OS의 스레드 스케줄링 기능의 기능입니다. 그러나이 방법으로 동시 작업을 실행할 수는 없습니다.

+1

'이렇게하면 동시 작업을 실행할 수 없습니다'- 오류 ... 가능합니다. 동시 작업 실행은 요점입니다. –

+0

오, 이런, 나 잘하지 못해. : P – Red

관련 문제