多线程中所有处理器的使用率如何变为100%

时间:2014-12-05 06:10:11

标签: java multithreading process cpu cpu-usage

我的系统是7核CPU机器。我刚试过运行以下程序

 for(int i=0;i<10; i++)
 {
        new Thread(new Runnable()
        {   
            @Override
            public void run()
            {
                while (true)
                {

                }   
            }
        }).start();;
    }

现在我的CPU使用率为100%(7个内核为100%)。这里有10个线程在单个进程javaw.exe中。它如何分散在我的所有CPU内核中?

单个进程是否可以在多个内核中运行,或者java实现是否负责在不同的处理器之间提供线程?

2 个答案:

答案 0 :(得分:1)

是的,可以在多个CPU之间拆分同一进程的多个线程。对于许多应用程序,这是使用多个线程的重点。

大多数当前的JVM实现都使用本机操作系统线程(一个Java线程 - 一个操作系统线程),所以这一切都由操作系统完成。替代方案是“green threads”,JVM将手动安排执行。对于没有“真正”线程的架构或操作系统来说,这似乎已成为过去。

答案 1 :(得分:0)

据我所知,这是OS的线程调度功能的一个功能。 但是,您无法以这种方式运行并发操作。