我对finalize方法有疑问.如果我有很多具有许多继承的类,那么当应用程序关闭时如何调用所有finalize方法?
use*_*421 12
System.runFinalizersOnExit(true),但请注意,它已被弃用.如果你依赖这种事情,你基本上已经做错了.
finalize() 方法不在应用程序退出时运行.
建议的方法是使用关闭钩子.
例如
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
// shutdown logic
}
});
Run Code Online (Sandbox Code Playgroud)
在以下情况下执行关闭挂钩:
Java也提供了一个调用的方法,runFinalizersOnExit()这是@deprecated.它因以下原因而被弃用:
它可能导致在活动对象上调用终结器,而其他线程同时操作这些对象,导致不稳定的行为或死锁
基本上,runFinalizersOnExit()是不安全的.如上所述,使用关闭钩子.
| 归档时间: |
|
| 查看次数: |
4037 次 |
| 最近记录: |