5

通常、Java プログラムは「javaw」と呼ばれる単一のプロセスで実行されます。単一のプロセスを実行すると、1 つのコア (マルチコア) の最大リソースしか取得できません。しかし、jvmでマルチスレッドプログラムを実行すると、使用されるコアの数は、1つのプロセスが実行できるスレッドの数に応じて異なります。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

1 つのプロセスのスレッドは、個々のプロセスと同様に、異なる CPU および CPU コアに分散できます。アプリケーションに 1 つのプロセスがあるからといって、その多くのスレッドが 1 つの CPU/コアにバインドされているわけではありません。

于 2012-10-08T06:41:44.920 に答える