Middle+
Máte skúsenosti s semaforami pri vývoji Android aplikácií?
sobes.tech AI
Odpoveď od AI
Áno, mám skúsenosti. Semafory sa používajú na riadenie prístupu k obmedzeným zdrojom v prostredí s viacerými vláknami. Pri vývoji pre Android je to užitočné na správu paralelného prístupu k zdieľaným dátam, napríklad pri práci s databázami alebo sieťovými požiadavkami z rôznych vlákien.
Používam triedu Semaphore z balíka java.util.concurrent.
Hlavné metódy:
acquire(): Získa povolenie. Ak nie je dostupné, vlákno sa zablokuje.release(): Uvoľní povolenie a zvýši dostupné množstvo.
Príklad použitia na obmedzenie paralelného prístupu k zdroju:
import java.util.concurrent.Semaphore;
// Deklarujeme semaphore s 2 povoleniami
private final Semaphore resourceSemaphore = new Semaphore(2);
public void accessResource(int threadId) {
try {
// Získať povolenie, blokuje ak je limit dosiahnutý
resourceSemaphore.acquire();
System.out.println("Vlákno " + threadId + " získalo prístup ku zdroju.");
// Simulácia práce so zdrojom
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
// Uvoľniť povolenie
resourceSemaphore.release();
System.out.println("Vlákno " + threadId + " uvoľnilo zdroj.");
}
}
Semafory umožňujú efektívne riadenie poolov zdrojov a predchádzanie podmienkam súťaže. Je dôležité starostlivo plánovať počet povolení a správne spracovávať ich získavanie a uvoľňovanie, aby sa predišlo vzájomným zámkom.