Что происходит, когда несколько потоков запрашивают один и тот же класс для загрузки одновременно? - PullRequest
6 голосов
/ 17 марта 2019

В многопоточной среде, когда несколько потоков ссылаются на класс одновременно, завершает ли JVM загрузку класса несколько раз?

Если нет, как происходит синхронизация?

1 Ответ

3 голосов
/ 17 марта 2019

Класс будет загружен один раз. См. jls 12.4.2

Для каждого класса или интерфейса C существует уникальная блокировка инициализации LC. Отображение из C в LC оставлено на усмотрение Java Реализация виртуальной машины. Процедура инициализации C является тогда следующим образом:

  1. Синхронизация при блокировке инициализации, LC, для C. Это включает ожидание, пока текущий поток не сможет получить LC.

...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...