【发布时间】:2013-01-12 19:12:20
【问题描述】:
我在java中创建了一个简单的程序:
public static void main(String[] args) throws InterruptedException {
while (true)
;
}
如果我在 Linux 机器上运行它,它会显示 100% 的 CPU 使用率,但不会导致操作系统看起来很慢。但是,如果我在 Windows 上运行完全相同的代码,它只会显示大约 20% 的 CPU 使用率。
我在 Windows 上使用 Oracle JRE,在 Linux 上使用 OpenJDK 6。
我想知道 Windows 的调度程序是否会随机抢占线程而 Linux 不会?
【问题讨论】:
-
依赖于操作系统任务调度。
-
你有多少个内核?当所有核心都忙时,Windows 任务管理器报告 100%。您的 linux 工具是否执行类似的操作,或者它是否报告 100% 的 1 个核心的工作价值,并且当所有核心都忙时,它是
100*N cores %? -
我有 4 个内核,在 linux 上我使用系统监控工具
-
@Quoi 不是。如果该程序正在运行,那么该线程将在 Windows 和 Linux 上不间断地运行。
标签: java linux windows multithreading cpu-usage