Junior — Middle
Qual è il ruolo del semaforo nella gestione dell'accesso alle risorse nella programmazione multithread?
sobes.tech AI
Risposta dell'AI
Семафор в многопоточном программировании используется для управления доступом к ограниченным ресурсам. Он содержит счетчик, который показывает, сколько потоков могут одновременно получить доступ к ресурсу. Когда поток хочет использовать ресурс, он пытается "захватить" семафор (уменьшить счетчик). Если счетчик больше нуля, поток получает доступ, иначе он блокируется до освобождения ресурса другим потоком.
Пример: если у вас есть пул из 3 соединений с базой данных, семафор с счетчиком 3 позволит одновременно работать не более чем трем потокам.
В Java это выглядит так:
Semaphore semaphore = new Semaphore(3);
try {
semaphore.acquire(); // пытаемся получить разрешение
// работа с ресурсом
} finally {
semaphore.release(); // освобождаем разрешение
}