Sobes.tech
Junior — Middle

Czy mógłbyś wyjaśnić koncepcję synchronizacji w programowaniu wielowątkowym?

sobes.tech AI

Odpowiedź od AI

Synchronizacja w programowaniu wielowątkowym to mechanizm, który pozwala zarządzać dostępem wielu wątków do wspólnych zasobów, aby uniknąć konfliktów i nieprawidłowego zachowania programu. Bez synchronizacji, wątki mogą jednocześnie modyfikować te same dane, co prowadzi do warunków wyścigu.

W Java i Android często używa się słowa kluczowego synchronized, które blokuje dostęp do określonego fragmentu kodu lub obiektu, pozwalając na wykonywanie tego kodu tylko przez jeden wątek w danym momencie.

Przykład:

public class Counter {
    private int count = 0;

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

    public int getCount() {
        return count;
    }
}

Tutaj metoda increment jest synchronizowana, a jeśli kilka wątków wywoła ją jednocześnie, będą wykonywać się kolejno, zapobiegając nieprawidłowemu zwiększeniu licznika.

W Androidzie można również korzystać z innych mechanizmów synchronizacji, takich jak ReentrantLock, Semaphore czy klasy Atomic z pakietu java.util.concurrent, dla bardziej elastycznego zarządzania wątkami.