Co robi jvm, aby korzystać z zasobu procesora wielordzeniowego?
Zazwyczaj program java działa z jednym procesem o nazwie „javaw”. A kiedy uruchamiam pojedynczy proces, mogę uzyskać tylko maksymalny zasób jednego rdzenia (multicores). Ale gdy uruchamiam program wielowątkowy w jvm, liczba używanych rdzeni jest zgodna z liczbą wątków, które mogą wykraczać poza jeden proces. Czy więc ktoś może dać mi informacje o tym, jak jvm radzi sobie z programem wielowątkowym w wielordzeniowej maszynie cpu?
/**
* 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();
}
}
}