Sobes.tech
Junior — Middle

Jakie metody można zastosować, aby zapewnić bezpieczny dostęp do obiektu lub jego pola z wielu wątków jednocześnie?

sobes.tech AI

Odpowiedź od AI

Aby zapewnić bezpieczny dostęp do obiektu lub jego pola z wielu wątków w Java, używa się różnych metod synchronizacji:

  • Słowo kluczowe synchronized — można synchronizować metody lub bloki kodu, aby tylko jeden wątek mógł je wykonywać naraz.

  • Klasy z pakietu java.util.concurrent, na przykład ReentrantLock — bardziej elastyczny mechanizm blokad.

  • Pola Volatile — gwarantują widoczność zmian zmiennej między wątkami, ale nie zapewniają atomowości złożonych operacji.

  • Klasy atomowe (AtomicInteger, AtomicReference itd.) — zapewniają operacje atomowe bez blokad.

  • Obiekty niemutowalne — jeśli obiekt jest niezmienny, jest bezpieczny do dostępu z wielu wątków bez synchronizacji.

Przykład z synchronized:

public class Counter {
    private int count = 0;

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

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

Taka metoda gwarantuje, że operacje na count będą atomowe i bezpieczne dla wątków.