Как и почему семафор может выдавать больше разрешений, чем он был инициализирован?

Я читаю книгу Java Concurrency in Practice. В разделе, посвященном java.util.concurrent.Semaphore , следующие строки присутствуют в в книге. Это комментарий о реализации объектов "виртуальных разрешений"

Реализация не имеет фактических объектов разрешений, а Семафор не связывает выданные разрешения с потоками, поэтому разрешение, полученное в одном потоке, может быть освобождено из другого потока. Вы можете думать о получении как о потреблении разрешения и о выпуске как о его создании; Семафор не ограничен количеством разрешений, с которыми он был создан.

Может кто-нибудь объяснить это? Мне сложно это понять. Если мы создадим пул фиксированного размера, мы создать фиксированное количество «разрешений». Из приведенного выше утверждения, похоже, что «разрешения» могут продолжать расти. Почему это так спроектировано?

10
задан Paŭlo Ebermann 26 September 2011 в 15:12
поделиться