Насколько потокобезопасен enum в Java?

Переход к целевой цели проекта в Xcode> Общие> Установить «Требуется полный экран» (в строке «Скрыть состояние») до «Истина».

30
задан Lydon Ch 28 March 2010 в 04:14
поделиться

2 ответа

Этот метод абсолютно потокобезопасен. Гарантируется, что значение перечисления будет инициализировано только один раз, когда-либо, одним потоком, прежде чем оно будет использовано. Однако я не уверен, когда это происходит при загрузке класса перечисления или при первом обращении к самому значению перечисления. Использование этого метода на самом деле немного безопаснее, чем другие методы, потому что с помощью отражения нет даже способа получить вторую копию вашего синглтона на основе перечисления.

9
ответ дан 27 November 2019 в 22:18
поделиться

Как говорит @Mike, создание перечисления гарантированно потокобезопасно. Однако методы, которые вы добавляете в класс enum, не несут никакой гарантии потокобезопасности. В частности, метод leaveTheBuilding может выполняться одновременно несколькими потоками. Если этот метод имеет побочные эффекты (изменяет состояние некоторой переменной), то необходимо подумать о защите этого метода (т.е. сделать его синхронизированным) или его части.

33
ответ дан 27 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: