Middle — Middle+
Kur un kā tiek izmantoti semafori programmatūras sistēmu arhitektūrā?
sobes.tech AI
Atbilde no AI
Semafori programmatūras sistēmu arhitektūrā tiek izmantoti, lai pārvaldītu piekļuvi ierobežotiem resursiem daudzprocesu vidē, novēršot sacensību stāvokļus un nodrošinot sinhronizāciju.
Galvenie semaforu lietošanas scenāriji:
- Ierobežot vienlaicīgi pieejamo pavedienu skaitu resursam (piemēram, savienojumu baseins ar datu bāzi).
- Koordinēt pavedienu darbu, izpildot kritiskās sadaļas.
- Ieviest gaidīšanas un paziņošanas mehānismus starp pavedieniem.
Java semafors ir īstenots klasē java.util.concurrent.Semaphore.
Piemērs, kā izmantot semaforu, lai ierobežotu piekļuvi resursam trīs pavedieniem:
import java.util.concurrent.Semaphore;
public class ResourceAccess {
private final Semaphore semaphore = new Semaphore(3);
public void accessResource() {
try {
semaphore.acquire(); // Pieprasīt atļauju
System.out.println(Thread.currentThread().getName() + " ir ieguvis piekļuvi resursam");
// Darbs ar resursu
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} finally {
semaphore.release(); // Atbrīvot atļauju
System.out.println(Thread.currentThread().getName() + " ir atbrīvojis resursu");
}
}
}
Tādējādi semafori palīdz kontrolēt konkurējošo piekļuvi un nodrošina pareizu sadarbību starp pavedieniem sarežģītās sistēmās.