Sobes.tech
Junior — Middle

Mohol by ste vysvetliť koncept synchronizácie v viacvláknovom programovaní?

sobes.tech AI

Odpoveď od AI

Synchronizácia v multithreadovom programovaní je mechanizmus, ktorý umožňuje riadiť prístup viacerých vlákien ku spoločným zdrojom, aby sa predišlo konfliktom a nesprávnemu správaniu programu. Bez synchronizácie môžu vlákna súčasne meniť rovnaké údaje, čo vedie k podmienkam súťaže.

V Jave a Android sa často používa kľúčové slovo synchronized, ktoré blokuje prístup k určitému úseku kódu alebo objektu, čím umožňuje, aby tento kód vykonávalo naraz iba jedno vlákno.

Príklad:

public class Counter {
    private int count = 0;

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

    public int getCount() {
        return count;
    }
}

Tu je metóda increment synchronizovaná, a ak ju volí viac vlákien súčasne, budú sa vykonávať postupne, čím sa zabráni nesprávnemu zvýšeniu čítača.

Tiež v Androidu je možné použiť iné mechanizmy synchronizácie, ako sú ReentrantLock, Semaphore alebo triedy Atomic z balíka java.util.concurrent, ktoré umožňujú flexibilnejšie riadenie vlákien.