Sobes.tech
Middle+

Da li imate iskustva sa semaforima u razvoju Android aplikacija?

sobes.tech АИ

Одговор од АИ

Da, imam iskustva. Semafori se koriste za kontrolu pristupa ograničenim resursima u okruženju sa više niti. U razvoju za Android, ovo je korisno za upravljanje paralelnim pristupom zajedničkim podacima, na primer, pri radu sa bazama podataka ili mrežnim zahtevima iz različitih niti.

Koristim klasu Semaphore iz paketa java.util.concurrent.

Glavne metode:

  • acquire(): Dobija dozvolu. Ako nije dostupna, nit se blokira.
  • release(): Oslobađa dozvolu, povećavajući dostupni broj.

Primer upotrebe za ograničavanje paralelnog pristupa resursu:

import java.util.concurrent.Semaphore;

// Deklarisati semafor sa 2 dozvole
private final Semaphore resourceSemaphore = new Semaphore(2);

public void accessResource(int threadId) {
    try {
        // Dobijanje dozvole, blokira ako je limit dostignut
        resourceSemaphore.acquire();
        System.out.println("Nit " + threadId + " je dobila pristup resursu.");

        // Simulacija rada sa resursom
        Thread.sleep(1000);

    } catch (InterruptedException e) {
        e.printStackTrace();
    } finally {
        // Oslobađanje dozvole
        resourceSemaphore.release();
        System.out.println("Nit " + threadId + " je oslobodila resurs.");
    }
}

Semafori omogućavaju efikasno upravljanje bazama resursa i sprečavaju uslove trke. Važno je pažljivo planirati broj dozvola i pravilno upravljati njihovim sticanjem i oslobađanjem, kako bi se izbegli međusobni blokovi.