Middle+
Aveți experiență cu semafoare în dezvoltarea de aplicații Android?
sobes.tech AI
Răspuns de la AI
Da, am experiență. Semaforii sunt folosiți pentru a controla accesul la resurse limitate într-un mediu multithread. În dezvoltarea Android, acest lucru este util pentru gestionarea accesului paralel la datele partajate, de exemplu, atunci când lucrați cu baze de date sau solicitări de rețea din diferite fire.
Folosesc clasa Semaphore din pachetul java.util.concurrent.
Metode principale:
acquire(): Obține permisiunea. Dacă nu este disponibilă, firul de execuție se blochează.release(): Eliberează permisiunea, mărind numărul disponibil.
Exemplu de utilizare pentru limitarea accesului paralel la o resursă:
import java.util.concurrent.Semaphore;
// Declarăm un semafor cu 2 permisiuni
private final Semaphore resourceSemaphore = new Semaphore(2);
public void accessResource(int threadId) {
try {
// Obține permisiunea, blocând dacă limita este atinsă
resourceSemaphore.acquire();
System.out.println("Firul " + threadId + " a obținut accesul la resursă.");
// Simulare de lucru cu resursa
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
// Eliberează permisiunea
resourceSemaphore.release();
System.out.println("Firul " + threadId + " a eliberat resursa.");
}
}
Semaforii permit gestionarea eficientă a poolurilor de resurse și prevenirea condițiilor de cursă. Este important să planificați cu atenție numărul de permisiuni și să gestionați corect obținerea și eliberarea pentru a evita blocajele reciproce.