Security middle
Как реализовать потокобезопасный singleton?
Ответ
Лучший вариант — enum. Альтернативы: static holder (Initialization-on-demand), double-checked locking с volatile.
Разбор: Enum, static holder и DCL с volatile — корректные потокобезопасные варианты. Ловушка в том, что DCL без volatile сломан из-за возможной публикации частично сконструированного объекта (реордеринг записей); synchronized-метод работает, но штрафует каждый вызов; а ThreadLocal вообще создаст по экземпляру на поток, то есть нарушит сам принцип синглтона.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.