2015-03-02 4 views
-3

Я читал о Semaphore классе there, и теперь я хотел бы понять, как я могу использовать этот класс в реальном коде? В чем польза Семафоров? Я получил то, что мы могли использовать семафоры, чтобы повысить производительность, уменьшая параллелизм для ресурса. Это основное использование Semaphore?Где использовать семафоры?

+0

Возможный дубликат [Что такое семафор?] (Http://stackoverflow.com/questions/34519/what-is-a-semaphore) Я имею в виду, что в него включены некоторые примеры о том, где «использовать». –

+0

Семафоры - это ресурсы для синхронизации процессов. Если вы не создаете два процесса или более, вы должны забыть семафоры. – Cebrian92

+0

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

ответ

1

tl; dr Ответ: Семафоры позволяют ограничить доступ к некоторому пути кода к определенному числу потоков - без управления механизмом обработки этих потоков. Пример использования - веб-сервис, который предлагает некоторую ресурсоемкую задачу - с помощью Семафора, вы можете ограничить эту задачу, т. Е. 5 потоков при использовании большего пула потоков пула приложений, обрабатывающих этот и некоторые другие типы запросов.

Длинный ответ: см. Комментарий Furkan Omay.

1

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

Рассматривайте это как вышибала в пабе, который позволяет людям, могут ли они войти или нет. Если паб заполнен и не может взять больше людей, он останавливается, пока кто-то не уйдет. Семафоры можно использовать, чтобы сделать что-то подобное вашему коду!

Надеюсь, это поможет!

Смежные вопросы