Как реализовать счетчик объектов в Java

Интервьюер спросил меня, что

Как вы можете реализовать класс Foo, где вы сможете подсчитывать экземпляры этого класса. Существует больше потоков, которые создают экземпляры этого класса Foo.

Я ответил следующим кодом

public class Foo {
    private static int count = 0;

    public Foo() {
    incrementCount();
    }

    public void incrementCount() {
        synchronize (Foo.class) {
            count++;
        }
    }
} 

Она снова спросила меня:

Если поток завершается, счетчик должен уменьшаться, как это сделать?

Я не ответил на этот вопрос.

Я знаю про метод finalize(), но это зависит от Garbage collector, когда этот метод будет вызван, даже если мы переопределим finalize().

У меня пока нет решения, объясните пожалуйста

11
задан Android Learner 27 December 2011 в 07:03
поделиться