Что делает jvm для использования ресурсов многоядерного процессора?
Обычно Java-программа выполняется с одним процессом, называемым «javaw». И когда я запускаю один процесс, я могу получить максимум ресурсов только одного ядра (многоядерных). Но когда я запускаю многопоточную программу в jvm, количество используемых ей ядер соответствует количеству потоков, которое может сделать не один процесс. Так может кто-нибудь дать мне некоторую информацию о том, как jvm справляется с многопоточными программами на многоядерном процессоре?
/**
* I run this program in my machine which has 8 core cpu
* and the jre is 1.6.0_24
* How does jvm use one process to use all the cpu resources?
*/
public class MultiCoreUseTest implements Runnable{
@Override
public void run() {
int i;
while(true)
i =1;
}
public static void main(String[] args) {
//create 8 threads
//8 threads the usage of cpu is 100%
// if 4 threads the usage of cpu is 50%
for(int i = 0; i<8; i++){
new Thread(new MultiCoreUseTest()).start();
}
}
}