Семафор Java + Блокировка синхронизации не удерживается, когда вызывается методAcquire()

Я не могу понять значение строки ниже, которая указана по ссылке Мир Java

Блокировка синхронизации не удерживается, когда вызывается методAcquire(), потому что это предотвратило бы возврат элемента в пул.

Пожалуйста, помогите мне понять это.


person Learner    schedule 16.09.2013    source источник


Ответы (2)


В контексте статьи и объяснения кода в приведенной выше строке говорится, что всякий раз, когда вызывается методAcquire(), он фактически не блокирует ресурс, который он пытается получить. . Почему это так?

Семафор похож на спящий замок. Когда задача пытается получить семафор, который уже занят, семафор помещает задачу в очередь ожидания и переводит ее в спящий режим.

Поскольку из-за использования семафора вы запрашиваете блокировку и ожидаете в очереди. Вы получите блокировку только тогда, когда вам действительно дадут ресурс.

person Gyanendra Dwivedi    schedule 16.09.2013

Посмотрите это анимированное видео, оно вам поможет

person Grigoriev Nick    schedule 23.10.2013