В многопоточной среде, когда несколько потоков ссылаются на класс одновременно, завершает ли JVM загрузку класса несколько раз?
Если нет, как происходит синхронизация?
Класс будет загружен один раз. См. jls 12.4.2
Для каждого класса или интерфейса C существует уникальная блокировка инициализации LC. Отображение из C в LC оставлено на усмотрение Java Реализация виртуальной машины. Процедура инициализации C является тогда следующим образом: Синхронизация при блокировке инициализации, LC, для C. Это включает ожидание, пока текущий поток не сможет получить LC. ...
Для каждого класса или интерфейса C существует уникальная блокировка инициализации LC. Отображение из C в LC оставлено на усмотрение Java Реализация виртуальной машины. Процедура инициализации C является тогда следующим образом:
...