Синхронизированный раздел внутри конструктора и различия синхронизированного конструктора

1

Я заметил интересное поведение:

я могу написать

class My {
     public My(){
        synchronized(this){
            // code
        }

    }  
}

но я не могу писать

class My {
         public synchronized My(){
                // code
            }

        }  
    }

Я думал, что обе конструкции одинаково работают с java API.

Просьба уточнить это недоразумение.

Теги:
concurrency
synchronization
synchronized

2 ответа

2
Лучший ответ

В первом случае объект почти создан, необходимо выполнить только тело конструктора.

Но во втором случае не будет никаких объектов для синхронизации.

  • 0
    Вниз, избиратель, позаботься о комментариях.
  • 0
    только сейчас я понял, что ваш ответ неверен, потому что конструктор выполняется после инициализации блока. Но внутри блока инициализации я могу написать синхронизированный раздел с монитором. Как вы думаете ?
Показать ещё 3 комментария
0

Невозможно, чтобы две нити создавали один и тот же объект!

Таким образом, синхронизированный модификатор не имеет смысла для конструктора.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню