您可以添加一个将在JVM终止时调用的关闭挂钩Runtime.addShutdownHook().
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
// ...
}
});
Run Code Online (Sandbox Code Playgroud)
如果JVM异常退出,则无法保证关闭挂钩运行.
正如@Kaleb指出的那样,Object.finalize()当一个对象符合垃圾收集资格时,你可以重载.正如Josh Bloch在Effective Java Item 7中指出的那样:
终结器是不可预测的,通常是危险的,通常是不必要的
紧随其后(由Josh强调):
在对象变得无法访问的时间和执行终结器的时间之间可能需要任意长的时间......在终结器中永远不要做任何时间关键的事情.
如果需要清理类中的资源,请在finally块中执行,或者实现close方法(或类似方法)而不是依赖finalize().
| 归档时间: |
|
| 查看次数: |
2579 次 |
| 最近记录: |