Sobes.tech
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(); // освобождаем разрешение
}