想在程序停止前,执行一定的计算,知道通过Runtime.getRuntime().addShutdownHook(t);  可以注册钩子,在关闭之前回调钩子,但是都是建议不要进行复杂操作或计算,可是我这个操作可能比较耗时,不知道有什么好方式,希望高手指点,谢谢!

解决方案 »

  1.   


    基本上你顶楼贴出来的这个做法就比较标准了,但确实不建议时间太长,因为时间太长可能操作系统或者用户会强行杀死进程。所以另一种可能的做法是,把关键处理做完,然后记录日志。下次程序启动时,可以根据日志把其它一些并不关键,但也需要做的事情做完。Oracle数据库在强制关闭时就会采用这种策略,先强制关闭,下次启动时再做各种回滚和重做啥的。
    这就好像360做什么鬼电脑优化的时候,就会把“关机时等待应用程序关闭”的时间设置的很短,显得关机很快,360功劳很大,其实大多进程都被强行终止了,祸害祸害啊。
      

  2.   

    对的这个思路是正解 win7就是更新的时候关机做一些下次开机做一些
      

  3.   

    ldh911 把我要说的话说了。