Ну, преимущество only , которое приходит мне в голову, - это (иллюзия) производительности: проверьте не потокобезопасным способом, затем выполните некоторые операции блокировки, чтобы проверить переменную, которая может бытьдорого.Тем не менее, поскольку блокировка с двойной проверкой нарушена таким образом, что исключает какие-либо твердые выводы из проверки, не поддерживающей потоки, и она всегда попахивает мне преждевременной оптимизацией в любом случае, я бы сказал, что нет, никаких преимуществ - это устаревшееИдиома Java-дней - но хотелось бы, чтобы ее исправили.
Редактировать: чтобы быть понятным (э), я считаю, что двойная проверка блокировки - это идиома, которая развивалась как повышение производительности при блокировке и проверке каждый раз, и,грубо говоря, это почти то же самое, что и некапсулированное сравнение и обмен.Я лично также являюсь поклонником инкапсуляции синхронизированных разделов кода, поэтому я считаю, что лучше вызывать другую операцию, чтобы выполнить грязную работу.