Junior — Middle
Jak zapewnić bezpieczeństwo podczas wykonywania operacji wielowątkowych?
sobes.tech AI
Odpowiedź od AI
Aby zapewnić bezpieczeństwo podczas wykonywania operacji wielowątkowych w Java, konieczne jest zapobieganie warunkom wyścigu i zapewnienie poprawnego dostępu do zasobów współdzielonych.
Główne podejścia:
-
Synchronizacja (synchronized) — blokowanie krytycznych sekcji kodu, aby tylko jeden wątek mógł je wykonywać naraz.
-
Użycie klas z
java.util.concurrent, np.ReentrantLock,Semaphore,ConcurrentHashMap. -
Obiekty niemutowalne — jeśli dane są niezmienne, można ich bezpiecznie używać z różnych wątków.
-
Zmienne Volatile — gwarantują widoczność zmian zmiennej między wątkami.
Przykład z synchronized:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Taka metoda zapobiega jednoczesnej zmianie zmiennej count przez wiele wątków, zapewniając bezpieczeństwo danych.