思想比知识更重要 成长比成功更重要
回归blogjava
BlogJava
首页
新文章
新随笔
聚合
管理
posts - 73, comments - 55, trackbacks - 0
为程序加上“关闭钩子”(ShutdownHook)
“
关闭钩子
”(ShutdownHook)是这样一个概念:向虚拟机注册一个线程,
当程序退出(Ctrl+C)
时虚拟机会启动这个线程,我们可以在这个线程的run()中做一些清除的工作,如:
释放数据库连接,关闭文件
等.
注册:
Runtime.getRuntime().addShutdownHook(Thread t);
注销:
Runtime.getRuntime().removeShutdownHook(Thread t);
[例子]
/*
*
* 在这个线程中实现程序退出前的清理工作
*
* @author Administrator
*
*/
class TestThread extends Thread {
boolean isTerminal
=
false;
public
void run() {
while
(!isTerminal) {
try {
Thread.sleep(
1000
);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("run sub thread");
}
}
/**/
/*
*
* 清理工作
*/
public
void onTerminal() {
isTerminal
=
true;
System.out.println("stop sun sub thread");
}
}
/**/
/*
*
* ShutdownDownHook测试类
*
* @author Administrator
*
*/
public
class TestShutdownHook extends Thread {
TestThread testThread;
public
void addThread(TestThread t) {
testThread
=
t;
}
/**/
/*
*
* 实现程序退出前的清理工作
*/
public
void run() {
System.out.println("This
is
ShutdownHook");
testThread.onTerminal();
}
public
static void main(String
[]
args) {
TestShutdownHook m
=
new TestShutdownHook();
TestThread t
=
new TestThread();
t.start();
m.addThread(t);
//
注册退出处理线程
Runtime.getRuntime().addShutdownHook(m);
}
}
运行结果:
run sub thread
run sub thread
run sub thread
run sub thread
This is ShutdownHook
stop sun sub thread
可以看到:当程序退出时(按Ctrl+c,但eclipse下不知道如何停止)启动了TestThread线程,执行了定义的释放工作。
posted on 2006-11-08 14:23
保尔任
阅读(349)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
Arithmetic & Data Structure(11)
J2EE(4)
J2SE(33)
Python(1)
随笔档案
2008年9月 (1)
2008年2月 (1)
2007年12月 (2)
2007年11月 (2)
2007年10月 (2)
2007年9月 (1)
2007年7月 (2)
2007年5月 (1)
2007年4月 (1)
2007年3月 (8)
2007年2月 (8)
2007年1月 (3)
2006年12月 (34)
2006年11月 (6)
文章分类
Design Patten(18)
open source(10)
文章档案
2008年8月 (1)
2008年7月 (1)
2006年12月 (1)
2006年11月 (3)
2006年10月 (14)
2006年9月 (7)
2006年8月 (34)
2006年7月 (32)
2006年6月 (39)
搜索
最新评论
1. re: Builder(生成器)模式
果断收藏
--忧桑的可乐鸡
2. re: 标准HTML标签的属性扩展
啊实打实打
--啊啊啊
3. re: ajax简单实例(js内产生xmlHttpRequest,它和servlet交互返回xml显示在页面)[未登录]
pp
--p
4. re: Java生成UUID(Universally Unique Identifier)
@huge
我的联系方式:987925110
--huge
5. re: Java生成UUID(Universally Unique Identifier)
你好,能像你请教一下有关jug的知识吗?
--huge
阅读排行榜
1. java处理url中的特殊字符(如&,%...)(10294)
2. 字符串匹配(5700)
3. CSDN论坛面试经验和面试题集锦(5671)
4. python学习笔记(5065)
5. 求两个数或多个数的最大公约数算法及其实现(4661)
评论排行榜
1. 如何求素数(6)
2. 各种排序算法java实现(3)
3. Java反射经典实例 Java Reflection Cookbook (2)
4. 求两个数或多个数的最大公约数算法及其实现(2)
5. 字符串匹配(2)