Sobes.tech
Junior — Middle

Mohl byste vysvětlit koncept synchronizace v vícevláknovém programování?

sobes.tech AI

Odpověď od AI

Synchronizace v vícevláknovém programování je mechanismus, který umožňuje řídit přístup více vláken ke sdíleným zdrojům, aby se předešlo konfliktům a nesprávnému chování programu. Bez synchronizace mohou vlákna současně měnit stejné údaje, což vede k závodním podmínkám.

V Javě a Androidu se často používá klíčové slovo synchronized, které blokuje přístup k určité části kódu nebo objektu, což umožňuje, aby tento kód vykonávalo najednou pouze jedno vlákno.

Příklad:

public class Counter {
    private int count = 0;

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

    public int getCount() {
        return count;
    }
}

Zde je metoda increment synchronizovaná, a pokud ji volí více vláken současně, budou se vykonávat postupně, čímž se zabrání nesprávnému zvýšení čítače.

Také v Androidu lze použít jiné mechanismy synchronizace, například ReentrantLock, Semaphore nebo třídy Atomic z balíčku java.util.concurrent, které umožňují flexibilnější správu vláken.