.
가장 먼저 알아야 할 점은 타사 라이브러리를 사용하지 않는 한 핵심 매핑에 대한 작업을 구체적으로 제어 할 수 없다는 것입니다. 어쨌든 이것을 수행하고 싶지는 않습니다. 단지 JVM이 그것에 대해 영리하게 두도록하십시오.
하드웨어의 모든 코어를 사용하려면 일반적으로 고정 된 스레드 풀의 스레드 수를 변경하십시오. ExecutorService
에 제출 된 작업 수에 따라 작업을 증가시키는 캐시 된 스레드 풀을 사용할 수 있습니다. 현대의 JVM 및 운영 체제에서 스레 싱은 걱정할 필요가 없으므로 1000 가지 작업에 대해 이야기하지 않는 한이 방법이 효과적입니다.
하지만 일반적으로 고정 된 수의 스레드를 풀에 설정합니다. 작업이 100 % CPU 바운드이면 JVM에있는 가상 프로세서 수와 일치하도록 스레드 수를 설정할 수 있습니다. 일반적으로 로그 출력, 네트워크 트랜잭션 및 기타 IO를 사용하면 모든 프로세서를 사용하기 위해 스레드 수를 늘려야 할 수 있습니다. 다른 값으로 두 번 프로그램을 돌리고 싶습니다.
당신의 경우에는 특별히 0,1,2,3 개의 작업을 하나의 스레드에서 실행하고 4,5는 병렬로 다른 스레드에서 실행하고 싶을 것 같습니다. 이 작업을 수행하려면 ExecutorService
에 4 개의 작업을 제출하고 각 작업에서 원하는 반복 번호를 실행해야합니다.
아마 같은 : 매핑을 스레드 수는 임의의 경우
executorService.submit(new MyTask(new int[] { 0, 1, 2, 3}));
executorService.submit(new MyTask(new int[] { 4, 5 }));
는 그냥 ExecutorService
10 개 작업을 제출하는 것과는 FIFO 방식으로 병렬로 작업을 실행합니다.
http://stackoverflow.com/questions/4010185/parallel-for-for-java – devshorts