Sobes.tech
Middle+

Máte zkušenosti s semafory při vývoji Android aplikací?

sobes.tech AI

Odpověď od AI

Ano, mám zkušenosti. Semafory se používají k řízení přístupu ke omezeným zdrojům v prostředí s více vlákny. V vývoji pro Android je to užitečné pro správu paralelního přístupu ke sdíleným datům, například při práci s databázemi nebo síťovými požadavky z různých vláken.

Používám třídu Semaphore z balíčku java.util.concurrent.

Hlavní metody:

  • acquire(): Získá povolení. Pokud není dostupné, vlákno se zablokuje.
  • release(): Uvolní povolení a zvýší dostupné množství.

Příklad použití k omezení paralelního přístupu ke zdroji:

import java.util.concurrent.Semaphore;

// Deklarace semaforu se 2 povoleními
private final Semaphore resourceSemaphore = new Semaphore(2);

public void accessResource(int threadId) {
    try {
        // Získání povolení, blokování pokud je limit dosažen
        resourceSemaphore.acquire();
        System.out.println("Vlákno " + threadId + " získalo přístup ke zdroji.");

        // Simulace práce se zdrojem
        Thread.sleep(1000);

    } catch (InterruptedException e) {
        e.printStackTrace();
    } finally {
        // Uvolnění povolení
        resourceSemaphore.release();
        System.out.println("Vlákno " + threadId + " uvolnilo zdroj.");
    }
}

Semafory umožňují efektivní správu poolů zdrojů a předcházejí závodním podmínkám. Je důležité pečlivě plánovat počet povolení a správně zacházet s jejich získáváním a uvolňováním, aby se předešlo vzájemným zámkům.