【发布时间】:2011-12-27 07:03:16
【问题描述】:
一位面试官问我
你如何实现一个 Foo 类,你可以在其中进行计数 该类的实例。有更多线程正在创建 该类 Foo 的实例。
我用下面的代码回复了
public class Foo {
private static int count = 0;
public Foo() {
incrementCount();
}
public void incrementCount() {
synchronize (Foo.class) {
count++;
}
}
}
她又问我了
如果一个线程结束,计数器应该递减,你怎么做?
我没有回答这个问题。
我知道finalize() 方法,但它取决于Garbage collector 何时调用此方法,即使我们覆盖finalize()。
我还没有解决办法,你能解释一下吗?
【问题讨论】:
-
我看不出这被否决的任何理由......这是一个有趣且具体的问题。 +1
-
仅供参考,使用 AtomicInteger 而不是 int 实际上会更快,因为您可以避免同步块。
标签: java multithreading counter finalizer