SO上已经发布了一个类似的问题,但是,该解决方案仅在循环不生成任何输出时才有效。相反,如果我尝试运行while(true) System.out.print(1);
并在之后点击Ctrl+ C,则会发生终端只是冻结并且似乎没有办法杀死它。除了关闭和重新打开终端外,还有什么可以做的吗?
问问题
606 次
1 回答
-2
你不应该有这样的循环。您应该通过将活动线程休眠一段时间来释放 CPU 一些时间
while (true) {
// Do your processing stuff here.
// This line ensures that the active thread releases some time
// to the CPU, allowing closure of the application via Ctrl-C.
Thread.sleep(numberOfMillisecondsToSleepFor);
}
您可以使用现有代码从另一个终端使用 kill 终止该进程,但您确实应该通过正确编码循环以迎合它来防止这种 CPU 锁定情况。
于 2016-03-14T15:16:53.287 回答