1

Есть такая инициализация поля класса

if (thread == null) {
    synchronized(this) {
        if (thread == null) {
            thread = new Thread(this, getClass().getName());
            thread.run();
        }
    }
}

Т.е. вначале без всяких блокировок проверяем проинициализированно поле или нет. Если нет, тогда входим в критическую секцию, проверяем еще раз (на тот случай, если поле уже успело проинициализироваться) и создаем объект.

Вопрос, нужно ли поле thread объявлять с модификатором volatile? Все модификации этого поля идут внутри блоков synchronized(this)

0 Answers0