以下是用 Effective Java 2nd 编写的:-
例如,依靠终结器来释放共享资源(如数据库)上的持久锁是使整个分布式系统陷入停顿的好方法。
因为,
完全有可能,甚至很可能,程序在没有对不再可访问的对象执行终结器的情况下终止。
那么写下面的代码就可以了吗?
public void doSomething(long abc) {
//Needs to wait on lock to avoid updates
ReentrantLock lock = mainLock;
lock.lock();
try {
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}