Middle — Middle+
Kde a ako sa používajú semafory v architektúre softvérových systémov?
sobes.tech AI
Odpoveď od AI
Semafory v architektúre softvérových systémov sa používajú na riadenie prístupu k obmedzeným zdrojom v prostredí s viacerými vláknami, predchádzajú závodným podmienkam a zabezpečujú synchronizáciu.
Hlavné scenáre použitia semaforov:
- Obmedzenie počtu vlákien, ktoré môžu súčasne pristupovať ku zdroju (napríklad pool pripojení k databáze).
- Koordinácia práce vlákien pri vykonávaní kritických sekcií.
- Implementácia mechanizmov čakania a oznámenia medzi vláknami.
V Jave je semafor implementovaný v triede java.util.concurrent.Semaphore.
Príklad použitia semaforu na obmedzenie prístupu ku zdroju tromi vláknami:
import java.util.concurrent.Semaphore;
public class ResourceAccess {
private final Semaphore semaphore = new Semaphore(3);
public void accessResource() {
try {
semaphore.acquire(); // Žiadosť o povolenie
System.out.println(Thread.currentThread().getName() + " získal prístup ku zdroju");
// Práca so zdrojom
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} finally {
semaphore.release(); // Uvoľnenie povolenia
System.out.println(Thread.currentThread().getName() + " uvoľnil zdroj");
}
}
}
Týmto spôsobom semafory pomáhajú riadiť konkurenčný prístup a zabezpečujú správnu interakciu medzi vláknami v zložitých systémoch.