扩展阅读
  • java命名空间java.lang.management类managementfactory的类成员方法: getoperatingsystemmxbean定义及介绍
  • java.util.Date 和 java.slq.Date 如何最简单实现互换?
  • java命名空间java.lang.management接口memorypoolmxbean的类成员方法: isvalid定义及介绍
  • 轻量级Java开发工具 Java Tools
  • java命名空间java.lang.management接口threadmxbean的类成员方法: isthreadcputimesupported定义及介绍
  • 在下初学java,请各位大虾推荐几个java学习网站吧!
  • java命名空间java.lang.management接口memorymanagermxbean的类成员方法: isvalid定义及介绍
  • 各位大虾,为什么我的java程序能通过编译,但是在用java命令运行程序的时候却老是报错“Exception in thread "main" java.lang.NoClassDe
  • java命名空间java.awt.image接口imageobserver的类成员方法: properties定义及介绍
  • 请问:java 入门以及学好Java要看哪些书籍阿????
  • java命名空间java.sql类types的类成员方法: other定义及介绍
  • Java源码工具 java2html
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • java bean和java class的区别??
  • java命名空间java.awt类color的类成员方法: gettransparency定义及介绍
  • 学习JAVA,请推荐好的 JAVA站点!
  • java命名空间java.lang.management类memoryusage的类成员方法: getcommitted定义及介绍
  • 关于Java好的网站,哪个Java好的教程。
  • java命名空间java.text类decimalformat的类成员方法: setparsebigdecimal定义及介绍
  • 如何将java.util.Date转化成java.sql.Date?
  • java命名空间java.awt类toolkit的类成员方法: createcomponent定义及介绍
  • 如何设置java应用程序的风格,如java风格,和windows风格!
  •  
    当前位置:  编程语言>java/jsp

    java命名空间java.lang类runtime的类成员方法: addshutdownhook定义及介绍

     
        发布时间:2014-2-17  


        本文导语:  addshutdownhook public void addshutdownhook(thread hook) 注册新的虚拟机来关闭钩子。 java 虚拟机会为了响应以下两类事件而关闭: 程序正常退出,这发生在最后的非守护线程退出时,或者在调用 exit(等同于 system.exit)方法时。...

    addshutdownhook

    public void addshutdownhook(thread hook)
    注册新的虚拟机来关闭钩子

    java 虚拟机会为了响应以下两类事件关闭

    • 程序正常退出,这发生在最后的非守护线程退出时,或者在调用 exit(等同于 system.exit方法时。或者,

    • 为响应用户中断终止 虚拟机,如键入 ^c;或发生系统事件,比如用户注销或系统关闭。

    关闭钩子 只是一个已初始化但尚未启动的线程。虚拟机开始启用其关闭序列时,它会以某种未指定的顺序启动所有已注册的关闭钩子,并让它们同时运行。运行完所有的钩子后,如果已启用退出终结,那么虚拟机接着会运行所有未调用的终结方法。最后,虚拟机会暂停。注意,关闭序列期间会继续运行守护线程,如果通过调用 exit 方法来发起关闭序列,那么也会继续运行非守护线程。

    一旦开始了关闭序列,则只能通过调用 halt 方法来停止这个序列,此方法可强行终止虚拟机。

    一旦开始了关闭序列,则不可能注册新的关闭钩子或取消注册先前已注册的钩子。尝试执行这些操作会导致抛出 illegalstateexception

    关闭钩子可在虚拟机生命周期中的特定时间运行,因此应保护性地对其进行编码。特别是应将关闭钩子编写为线程安全的,并尽可能地避免死锁。关闭钩子还应该不盲目地依靠某些服务,这些服务可能已注册了自己的关闭钩子,所以其本身可能正处于关闭进程中。例如,试图使用其他基于线程的服务(如 awt 事件指派线程)可能导致死锁。

    关闭钩子应该快速地完成其工作。当程序调用 exit 时,虚拟机应该迅速地关闭并退出。由于用户注销或系统关闭而终止虚拟机时,底层操作系统可能只允许在固定的时间内关闭并退出。因此在关闭钩子中尝试进行任何用户交互或执行长时间的计算都是不明智的。

    与其他所有线程一样,通过调用线程 threadgroup 对象uncaughtexception 方法,可在关闭钩子中处理未捕获的异常。此方法的默认实现是将该异常的堆栈跟踪打印system.err 并终止线程;它不会导致虚拟机退出或暂停。

    仅在很少的情况下,虚拟机可能会中止,也就是没有完全关闭就停止运行。虚拟机被外部终止时会出现这种现象,比如在 unix 上使用 sigkill 信号或者在 microsoft windows 上调用 terminateprocess。如果由于内部数据结构损坏或试图访问存在内存而导致本机方法执行错误,那么可能也会中止虚拟机。如果虚拟机中止,则无法保证是否将运行关闭钩子。

    参数
    hook - 一个已初始化但尚未启动的 thread 对象
    抛出:
    illegalargumentexception - 如果指定的钩子已注册,或者可以确定钩子正在运行或者已运行完毕
    illegalstateexception - 如果虚拟机已经处于关闭进程中
    securityexception - 如果安全管理器存在并且拒绝 runtimepermission("shutdownhooks")
    从以下版本开始:
    1.3
    另请参见:
    removeshutdownhook(java.lang.thread), halt(int), exit(int)
    相关文章推荐:
  • java命名空间java.text接口attributedcharacteriterator的类成员方法: getattribute定义及介绍
  • java文件重命名(文件批量重命名)实例程序代码分享
  • java命名空间java.beans接口propertyeditor的类成员方法: getvalue定义及介绍
  • java 命名空间 命名规则第1/2页
  • java命名空间java.awt类container的类成员方法: getlayout定义及介绍
  • Linux 下 java 的File类的renameTo()方法 不能重命名文件
  • java命名空间java.beans类defaultpersistencedelegate的类成员方法: defaultpersistencedelegate定义及介绍
  • Java命名规则详细总结
  • java命名空间java.text类decimalformat的类成员方法: topattern定义及介绍
  • Java Web项目前端规范(采用命名空间使js深度解耦合)
  • java命名空间java.sql类types的类成员方法: null定义及介绍
  • java的命名规则默认是不是匈牙利命名法?
  • java命名空间java.awt类awtevent的类成员方法: id定义及介绍
  • java开发命名规范总结
  • java命名空间java.text类choiceformat的类成员方法: choiceformat定义及介绍
  • Java实现文件批量重命名具体实例
  • java命名空间java.sql类driverpropertyinfo的类成员方法: value定义及介绍
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: isrepresentationclassinputstream定义及介绍
  • java命名空间java.text类decimalformat的类成员方法: tolocalizedpattern定义及介绍
  • java命名空间java.sql类types的类成员方法: binary定义及介绍
  • java命名空间java.sql类types的类成员方法: float定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3