Middle — Middle+
Къде и как се използват семафорите в архитектурата на софтуерните системи?
sobes.tech AI
Отговор от AI
Семафорите в архитектурата на софтуерните системи се използват за управление на достъпа до ограничени ресурси в среда с множество нишки, предотвратявайки състезателни условия и осигурявайки синхронизация.
Основните сценарии за използване на семафори:
- Ограничаване на броя на нишките, които могат да имат достъп до ресурс едновременно (например, пул от връзки с база данни).
- Координиране на работата на нишките при изпълнение на критични секции.
- Реализиране на механизми за изчакване и уведомяване между нишките.
В Java семафорът е реализиран в класа java.util.concurrent.Semaphore.
Пример за използване на семафор за ограничаване на достъпа до ресурс от три нишки:
import java.util.concurrent.Semaphore;
public class ResourceAccess {
private final Semaphore semaphore = new Semaphore(3);
public void accessResource() {
try {
semaphore.acquire(); // Заявка за разрешение
System.out.println(Thread.currentThread().getName() + " получи достъп до ресурса");
// Работа с ресурса
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} finally {
semaphore.release(); // Освобождаване на разрешението
System.out.println(Thread.currentThread().getName() + " освободи ресурса");
}
}
}
По този начин семафорите помагат за контролиране на конкурентния достъп и осигуряват коректно взаимодействие между нишките в сложни системи.