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_触发信号。
| 归档时间: |
|
| 查看次数: |
346 次 |
| 最近记录: |