Sobes.tech
Junior — Middle

Cum preia fluxul controlul asupra obiectului și cum are loc capturarea sa într-un mediu multi-thread?

sobes.tech AI

Răspuns de la AI

Într-un mediu multi-thread, un thread obține controlul asupra unui obiect prin mecanisme de sincronizare care asigură accesul exclusiv la resursă. În Android (și în Java în general), se folosesc cuvinte cheie și clase precum synchronized, ReentrantLock și altele.

Când un thread dorește să acceseze un obiect, încearcă să captureze monitorul (lock) acelui obiect. Dacă monitorul este liber, thread-ul obține controlul și poate efectua operații asupra obiectului. Dacă monitorul este ocupat de alt thread, thread-ul curent este blocat și așteaptă eliberarea.

Exemplu cu synchronized:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

Aici, metodele increment și getCount sunt sincronizate, ceea ce garantează că doar un thread poate executa aceste metode la un moment dat, prevenind condițiile de cursă.

Prin urmare, capturarea unui obiect înseamnă obținerea blocajului (lock) pe monitorul (lock) acelui obiect, asigurând un acces sigur thread-safe la starea sa.