应用程序上的flush printwriter关闭

时间:2016-10-11 10:10:52

标签: java multithreading interrupt interrupt-handling shutdown-hook

所以我有一个偶尔会写入文件的打印作者(“偶尔”在这里意味着“在一定数量的指定事件后定期”)。

现在,如果这些事件碰巧太少,那么当应用程序终止时,日志文件可能会变空(Ctrl + C)。

我可以在flush之后println,但是这会打败非自动刷新打印机的目的(如果我是唯一可以创建的打印机)想要传递File作为构造函数参数。)

Java中是否存在onApplicationKill - 在应用程序终止时我可以检测一次刷新写入程序?或者当前线程被杀死时要检测的东西?

1 个答案:

答案 0 :(得分:3)

您可以使用关机挂钩:

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

如果你用Ctrl+C

杀了它,它也应该有效