Sobes.tech
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.