我用Java里的addShutdownHook()挂入一个最终任务线程,创建一个空文件,在Windows下试了一式,成功。
但是将该Java程序搬到Linux上时,在XWindow的XTerm窗口中运行java myjavaclass,然后用鼠标点击XTerm窗口右上角的差差按钮,关闭窗口,结果没有发现那个在最终任务线程中写的“空文件”。说明addShutdownHook函数在Linux下无用!?

解决方案 »

  1.   

    因为在Linux中那个算是直接杀进程,这样Java没有机会调用那个hook如果你的程序中调用system.exit则会调用 (最常见就是程序监听一个端口的命令,在接收到shutdown后,调用 System.exit来结束)
      

  2.   

    我想要在操作系统(Linux)关闭之前,我的Java程序能够自动保存一些数据。我的Java程序是长期自动运行的,一般没有人守着。
      

  3.   

    这个是不太保险的做法。最好定时保存,你在Windows中如果使用任务管理器杀进程也是不会执行hook中的内容的。