Можешь объяснить, для чего нужен класс Semaphore в Java и как он работает? Как он управляет доступом потоков к ресурсам и что делают методы acquire и release? — ДейлиПреп