[問題] finalize一定會被執行到嗎?

看板java作者 (neverfly)時間16年前 (2009/04/14 21:21), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/2 (看更多)
我寫了一個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
有個Runtime.runFinalization() (不過我沒用過)
04/15 08:06, 1F

04/15 15:14, , 2F
不會
04/15 15:14, 2F
文章代碼(AID): #19v8s-bW (java)
文章代碼(AID): #19v8s-bW (java)