如果我拥有
即使在面对多个线程的情况下,只有GC会调用 finalize(),那么 IllegalStateException 是否一定不会被抛出呢?
我知道当 finalize() 方法导致对象不能被垃圾回收时,对象就不会被垃圾回收,其他方法可能会被调用。但是这个 finalize() 并没有做到那样的事情。即使在 finalize() 之后还会调用 foo() 的可能性吗?
public class Foo {
private boolean finalized = false;
public void foo() {
if (finalized)
throw new IllegalStateException("finalize() has been called.");
}
@Override public void finalize() {
super.finalize();
finalized = true;
}
}
即使在面对多个线程的情况下,只有GC会调用 finalize(),那么 IllegalStateException 是否一定不会被抛出呢?
我知道当 finalize() 方法导致对象不能被垃圾回收时,对象就不会被垃圾回收,其他方法可能会被调用。但是这个 finalize() 并没有做到那样的事情。即使在 finalize() 之后还会调用 foo() 的可能性吗?