Интервьюер спросил меня, что
Как вы можете реализовать класс Foo, где вы сможете подсчитывать экземпляры этого класса. Существует больше потоков, которые создают экземпляры этого класса Foo.
Я ответил следующим кодом
public class Foo {
private static int count = 0;
public Foo() {
incrementCount();
}
public void incrementCount() {
synchronize (Foo.class) {
count++;
}
}
}
Она снова спросила меня:
Если поток завершается, счетчик должен уменьшаться, как это сделать?
Я не ответил на этот вопрос.
Я знаю про метод finalize()
, но это зависит от Garbage collector
, когда этот метод будет вызван, даже если мы переопределим finalize()
.
У меня пока нет решения, объясните пожалуйста