我的系统是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实现是否负责在不同的处理器之间提供线程?
答案 0 :(得分:1)
是的,可以在多个CPU之间拆分同一进程的多个线程。对于许多应用程序,这是使用多个线程的重点。
大多数当前的JVM实现都使用本机操作系统线程(一个Java线程 - 一个操作系统线程),所以这一切都由操作系统完成。替代方案是“green threads”,JVM将手动安排执行。对于没有“真正”线程的架构或操作系统来说,这似乎已成为过去。
答案 1 :(得分:0)
据我所知,这是OS的线程调度功能的一个功能。 但是,您无法以这种方式运行并发操作。