[問題] finalize一定會被執行到嗎?
我寫了一個Thread,
功能就是每隔五秒監視資料庫的異動,
假設資料庫被新增了一筆資料,就去做某些事。
所以這個Thread基本上是隨著系統起動而被起動,
等到系統整個被停掉它才會被停掉。
但是我希望它在Exception發生,導致它會掛掉的時候,
或是說系統被停掉,導致它也連帶被停止的時候,
能把connection給close掉,以免佔了資料庫的連線數。
雖說不去管它,過一陣時間這個連線也會被資料庫踢掉,
但某些因素,我希望它能很快的釋放資源。
所以請問我如果把con.close();con=null;這段語法,
放在finalize的話,它無論如何一定會被執行到嗎?
由於不太熟Thread,想另外再請問一下,
像這種寫成背景程序的thread,
我是寫成像這種形式
void run(){
while(true){
do something
sleep(5000);
}
}
每次迴圈停頓五秒,以免佔住太多的cpu資源,
請問除此之外還有比較不佔資源的寫法嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.218.176
※ 編輯: neverfly 來自: 220.136.218.176 (04/14 21:21)
推
04/15 08:06, , 1F
04/15 08:06, 1F
推
04/15 15:14, , 2F
04/15 15:14, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):