思想比知識更重要 成長比成功更重要
回歸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
保爾任
閱讀(353)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
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
31
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中的特殊字符(如&,%...)(10322)
2.?字符串匹配(5713)
3.?CSDN論壇面試經驗和面試題集錦(5679)
4.?python學習筆記(5078)
5.?求兩個數或多個數的最大公約數算法及其實現(4681)
評論排行榜
1.?如何求素數(6)
2.?各種排序算法java實現(3)
3.?Java反射經典實例 Java Reflection Cookbook (2)
4.?求兩個數或多個數的最大公約數算法及其實現(2)
5.?字符串匹配(2)
Copyright ©2025 保爾任 Powered By
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
免费的黄色的网站
|
91精品国产免费久久久久久青草
|
国产精品无码一二区免费
|
国产亚洲视频在线观看
|
亚洲成A人片在线观看无码不卡
|
最近中文字幕大全免费视频
|
久久久久久久久无码精品亚洲日韩
|
亚洲精品乱码久久久久久按摩
|
青娱乐免费在线视频
|
丁香六月婷婷精品免费观看
|
亚洲影院在线观看
|
免费一级毛片在级播放
|
中文字幕成人免费视频
|
一级做a爰黑人又硬又粗免费看51社区国产精品视
|
亚洲另类图片另类电影
|
中文字幕亚洲第一
|
在线视频免费观看高清
|
91精品成人免费国产
|
亚洲精品久久无码
|
91亚洲导航深夜福利
|
亚洲国产中文字幕在线观看
|
亚洲日本va午夜中文字幕久久
|
999久久久免费精品国产
|
久久高潮一级毛片免费
|
亚洲av乱码中文一区二区三区
|
亚洲国产第一页www
|
亚洲精品成人片在线观看
|
三年片在线观看免费大全
|
美女被cao网站免费看在线看
|
国产偷国产偷亚洲高清在线
|
亚洲AV无码国产精品色
|
亚洲Av综合色区无码专区桃色
|
免费大片在线观看网站
|
四虎在线免费播放
|
青青青国产在线观看免费网站
|
中文字幕免费不卡二区
|
jizz中国免费
|
国产亚洲女在线线精品
|
亚洲精品无码mⅴ在线观看
|
亚洲精品国产电影午夜
|
亚洲国产成人精品不卡青青草原
|