Middle — Middle+
Unde și cum sunt utilizate semafoarele în arhitectura sistemelor software?
sobes.tech AI
Răspuns de la AI
Semaforii în arhitectura sistemelor software sunt utilizați pentru a gestiona accesul la resurse limitate într-un mediu multithread, prevenind condițiile de cursă și asigurând sincronizarea.
Scenariile principale de utilizare ale semafoarelor:
- Limitarea numărului de fire de execuție care pot accesa simultan o resursă (de exemplu, un pool de conexiuni la o bază de date).
- Coordonarea muncii firelor de execuție în timpul executării secțiunilor critice.
- Implementarea mecanismelor de așteptare și notificare între fire.
În Java, semaforul este implementat în clasa java.util.concurrent.Semaphore.
Exemplu de utilizare a unui semafor pentru a limita accesul la o resursă la trei fire:
import java.util.concurrent.Semaphore;
public class ResourceAccess {
private final Semaphore semaphore = new Semaphore(3);
public void accessResource() {
try {
semaphore.acquire(); // Solicitare permisiune
System.out.println(Thread.currentThread().getName() + " a obținut acces la resursă");
// Lucru cu resursa
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} finally {
semaphore.release(); // Eliberare permisiune
System.out.println(Thread.currentThread().getName() + " a eliberat resursa");
}
}
}
Astfel, semafoarele ajută la controlul accesului concurent și asigură o interacțiune corectă între fire în sisteme complexe.