因此,我有一个印刷机,偶尔会写入文件(这里的“偶尔”是指“在一定数量的指定事件之后定期”)。

现在,如果这些事件发生的次数太少,则在终止应用程序(Ctrl + C)时,日志文件可能最终为空。

我当然可以在每个flush之后加上println,但这会破坏使用非自动冲洗式打印机的目的(如果我想通过File,这是唯一可以创建的类型)作为构造函数参数)。

在Java中是否有onApplicationKill的东西,当应用程序终止时,我可以使用它来冲洗写入器一次?还是有什么方法可以检测当前线程何时被杀死?

最佳答案

您可以使用关闭钩子:

Runtime.getRuntime().addShutdownHook(new Thread() {
  public void run() {
      ...
      writer.flush();
  }
});


如果您用Ctrl+C杀死它,它也应该起作用

07-27 22:43