【问题标题】:execute task only on ctrl^C (Runtime.getRuntime().addShutdownHook(Thead t) )仅在 ctrl^C 上执行任务(Runtime.getRuntime().addShutdownHook(Thead t) )
【发布时间】:2015-04-28 04:02:54
【问题描述】:

我正在开发一个包含完整 java 代码和 SQL 的项目,应用程序从 shell 脚本启动。 当用户按下 Ctrl^C 时,我想执行一些清理任务(关闭事务 n 记录突然消息)。

我尝试通过添加关闭任务 Runtime.getRuntime().addShutdownHook(Thread)

但每次我的应用程序退出 VM 时它都会执行,而且我永远不知道该命令是否已成功终止/执行。

我正在寻找一些实现这一点的指针。

  • 提前致谢..!!!

【问题讨论】:

标签: java jvm runtime shutdown application-shutdown


【解决方案1】:

如果您覆盖 SecurityManager checkExit(int status) 方法,它将起作用。 但这不是处理此类事件的推荐方式。 如果我的代码遇到 ctrl+c,我通常喜欢在下次看到不一致的情况时进行清理。这通常不是一个坏主意。

【讨论】:

  • 应用程序数据库可以在其他一些地方使用,在那里我会得到陈旧的数据(从我的应用程序的角度来看)。我试图避免这种情况并针对这些对象记录一些消息。所以只有在退出时我才应该做这些任务。
  • @anji_rajesh 听起来您必须确保您的数据库操作更加原子化。而不是可能导致数据过时的多个步骤。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
相关资源
最近更新 更多