Spring中的registerShutdownHook是干啥的

孤好梦中X人 发布于 2016/08/05 10:38
阅读 9K+
收藏 0

NGINX Sprint China 2022--NGINX年度旗舰盛会,已开启免费预约!>>>

Spring中的registerShutdownHook是干啥的

public void registerShutdownHook() {
		if (this.shutdownHook == null) {
			// No shutdown hook registered yet.
			this.shutdownHook = new Thread() {
				@Override
				public void run() {
					synchronized (startupShutdownMonitor) {
						doClose();
					}
				}
			};
			Runtime.getRuntime().addShutdownHook(this.shutdownHook);
		}
	}



加载中
0
Zemo
Zemo

用来在非web应用中关闭IoC容器的...

Zemo
Zemo
@OSGi狂人 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { DUBBO_PROVIDER }); context.registerShutdownHook();
孤好梦中X人
孤好梦中X人
怎么关闭
0
逝水fox
逝水fox

Java Runtime注册的ShutdownHook在JVM进程正常关闭(操作系统正常关闭,用户调用System.exit(0), kill, Ctrl+C等)执行,Spring注册这个旨在正常关闭的时候关闭(代码中的doClose())容器。关闭容器的时候,会释放所有容器管理Bean,同时如果容器管理Bean声明了销毁回调方法也会执行(典型的就是数据库连接池的关闭,执行线程池的关闭等)以释放资源。

不过kill -9,拔电等不在此讨论范围

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部