오랜 시간 계산을 수행하는 프로그램이 있으므로 성능을 높이고 싶습니다. 그래서 지금 당장 3 개의 스레드를 실행하려고 시도했지만 java.exe
은 여전히 CPU 사용량의 25 %를 차지하므로() .setPriority(Thread.MAX_PRIORITY);
을 사용하려고 시도하고 실시간 (0120)에서 java.exe
의 우선 순위를 설정하더라도 남아 있습니다. . 나는 RealtimeThread
을 사용하려고했지만 더 느리게 작동하는 것처럼 보입니다. 각 스레드가 하나의 프로세서에 할당되고 총 CPU 사용량이 75 %까지 증가하면 완벽 할 수 있지만이를 수행하는 방법을 모르겠습니다. 이것이 바로 내 코드의 모습입니다.내 스레드 프로그램이 하나의 CPU 만 사용하는 이유는 무엇입니까?
Thread g1 = new MyThread(i,j);
g1.setPriority(Thread.MAX_PRIORITY);
g1.run();
Thread g2 = new MyThread(j,i);
g2.setPriority(Thread.MAX_PRIORITY);
g2.run();
Thread g3 = new MyThread(i,j);
g3.setPriority(Thread.MAX_PRIORITY);
g3.run();
if (g1.isAlive()) {
g1.join();
}
if (g2.isAlive()) {
g2.join();
}
if (g3.isAlive()) {
g3.join();
}
다른 사람들이 지적했듯이'.start()'를 사용하십시오. 그러면 아마도 우선 순위를 가지고 놀지 않고 스케쥴러에 스케쥴을 남기기를 원할 것입니다. 쓰레드 스케줄링에 대해 많은 것을 알지 못한다면, 스케쥴러의 일을하는 것보다 더 나은 일은 거의 없다. –
[java thread - run() 및 start() 메서드] 가능한 복제본 (http://stackoverflow.com/questions/3027495/java-thread-run-and-start-methods) –