5

通常一个java程序运行一个名为“javaw”的进程。当我运行一个进程时,我只能获得一个核心(多核)的最大资源。但是当我在 jvm 中运行一个多线程程序时,它使用的内核数取决于一个进程可以执行的线程数。那么谁能给我一些关于jvm如何处理多核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();     
    }
}

}
4

1 回答 1

7

一个进程的线程可以分布在不同的 CPU 和 CPU 内核上,就像单个进程一样。仅仅因为一个应用程序有一个进程并不意味着它的许多线程都绑定到一个 CPU/内核。

于 2012-10-08T06:41:44.920 回答