Требуется ли одноэлементная двойная проверка блокировки в JDK старшей версии (например, jdk11 или jdk14)?
Да, требуется. Все версии Java, начиная с Java 5 и далее, требуют, чтобы instance
было volatile
.
(До Java 5 приведенный выше код не работал надежно, независимо от того, был ли instance
объявлен как volatile
или нет.)
... кто-то сказал мне он больше не нуждается в летучести ...
Я бы попросил этого «кого-то» предоставить надежный источник (или доказательство «произошло до»), чтобы подтвердить свое утверждение. Если они верны, вся информация, необходимая им для построения доказательства, содержится в JLS 17.4 ... для соответствующей версии Java.