2

SO上已经发布了一个类似的问题,但是,该解决方案仅在循环不生成任何输出时才有效。相反,如果我尝试运行while(true) System.out.print(1);并在之后点击Ctrl+ C,则会发生终端只是冻结并且似乎没有办法杀死它。除了关闭和重新打开终端外,还有什么可以做的吗?

4

1 回答 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 回答