作者neverfly (neverfly)
看板java
标题[问题] finalize一定会被执行到吗?
时间Tue Apr 14 21:21:01 2009
我写了一个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)
1F:推 weiyucsie:有个Runtime.runFinalization() (不过我没用过) 04/15 08:06
2F:推 undeadj:不会 04/15 15:14