(Java)退出循环"远程"

ill*_*llu 7 java infinite-loop

我有一个Java程序基本上执行以下操作:

public static void main(String[] args)
{
  while(true)
  {
  // does stuff ...
  }
}
Run Code Online (Sandbox Code Playgroud)

无限循环是设计的 - 当单独留下时,程序将无限循环.在大多数情况下它工作正常.但是,有时候我想把程序用于维护,当我把它关闭时,我想确保它遍历循环中的所有代码然后退出.

我想知道什么是最好的解决方案.我想到的一个想法是做这样的事情:

public static void main(String[] args)
{
    File f = new File("C:\exit.txt");
    while(!f.exists())
    {
        // does stuff ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这基本上允许我通过创建一个名为"exit.txt"的文件来优雅地离开循环.这对我的目的来说可能没问题,但我想知道是否有更好的替代方法.

Dan*_*las -1

对于快速/肮脏的事情,请使用信号:

boolean done = false;

// ...

Signal.handle(new Signal("USR1"), new SignalHandler() {
    @Override
    public void handle(Signal signal) {
        // signal triggered ...
        done = true;
    }
});

// ...

while(!done) { ... }
Run Code Online (Sandbox Code Playgroud)

然后,用于kill -USR1 _pid_触发信号。