Back to questions
Junior — Middle
63
Какая роль у семафора в управлении доступом к ресурсам в многопоточном программировании?
Answer from AI
sobes.tech AI
Семафор в многопоточном программировании используется для управления доступом к ограниченным ресурсам. Он содержит счетчик, который показывает, сколько потоков могут одновременно получить доступ к ресурсу. Когда поток хочет использовать ресурс, он пытается "захватить" семафор (уменьшить счетчик). Если счетчик больше нуля, поток получает доступ, иначе он блокируется до освобождения ресурса другим потоком.
Пример: если у вас есть пул из 3 соединений с базой данных, семафор с счетчиком 3 позволит одновременно работать не более чем трем потокам.
В Java это выглядит так:
Semaphore semaphore = new Semaphore(3);
try {
semaphore.acquire(); // пытаемся получить разрешение
// работа с ресурсом
} finally {
semaphore.release(); // освобождаем разрешение
}