经验丰富的 Java 新手正在寻求您的智慧:
如果无法确保在对象超出范围时执行某些特定的块代码,那么还有哪些其他方法可以提供相同的功能?(似乎 finalize 显然不是为了那个)
一个经典的例子是作用域锁成语:
void method()
{
// Thread-unsafe operations {...}
{ // <- New scope
// Give a mutex to the lock
ScopedLock lock(m_mutex);
// thread safe operations {...}
if (...) return; // Mutex is unlocked automatically on return
// thread safe operations {...}
} // <- End of scope, Mutex is unlocked automatically
// Thread-unsafe operations {...}
}
我可以理解,在 Java 中,如果您没有显式调用它,那么执行一些代码是不受欢迎的。但是我发现能够在对象生命周期结束时强制执行一些代码是一个非常强大的功能,可以确保客户端代码合理地使用您的类。谢谢