Я просто наткнулся на следующий фрагмент кода, и мне интересно, есть ли более красивая альтернатива, которая имеет такую же производительность.
if (!isInitialized) {
synchronized (this) {
if (!isInitialized) {
// Initialization code
isInitialized = true;
}
}
}
Конечно, внешний оператор if может быть удален без ущерба для безопасности потока. Но это может повлиять на производительность, когда несколько потоков будут вызывать код одновременно, поскольку проверка isInitialized может выполняться только в одном потоке одновременно.
Выполнение инициализации в статическом контексте невозможно.