Я пытаюсь подсчитать, сколько экземпляров класса, сгенерированного в течение времени выполнения процесса в многопоточной среде. То, как я делаю это, чтобы увеличить статический счетчик в конструкторе, глядя на это сообщение: How to Count Number of Instances of a ClassПодсчитайте количество экземпляров класса в многопоточной среде?
Таким образом, в многопоточной среде, вот как я определить класс:
class Television {
private static volatile int counter = 0;
public Television(){
counter ++;
}
}
Однако , Я не уверен, есть ли потенциальная ошибка с кодом выше, так как я думаю, что конструктор в java не подразумевает синхронизацию и counter++
не является атомарным, так что если два потока создают экземпляры одновременно, является ли код как-то ошибкой? но я еще не совсем уверен.
Правильно, есть ошибка, поскольку считывание счетчика и запись в счетчик не выполняются атомарно. Используйте 'AtomicInteger'. –
Используйте атомный счетчик. tutorial/essential/parallelurrency/atomicvars.html –
И, конечно же; один интересный вопрос: почему вы хотите это сделать? Какую проблему вы намерены решить, зная о количестве экземпляров? – GhostCat