Sobes.tech
Junior — Middle

Aké metódy možno použiť na prevenciu podmienok pretekania v prostredí s viacerými vláknami?

sobes.tech AI

Odpoveď od AI

Na prevenciu podmienky pretekania (race condition) v prostredí s viacerými vláknami sa používajú nasledujúce metódy:

  • Synchronizácia (synchronized) — blokovanie kritických sekcií kódu, aby ich mohol vykonávať iba jedno vlákno naraz.
  • Použitie tried z java.util.concurrent — napríklad, ReentrantLock, AtomicInteger, ConcurrentHashMap.
  • Vyvarovanie sa zdieľaného stavu — navrhovanie vláknovo bezpečných dátových štruktúr alebo používanie nemenných objektov.
  • Použitie volatile — zabezpečenie viditeľnosti zmien premenných medzi vláknami.

Príklad s synchronized:

public class Counter {
    private int count = 0;

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

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

Tu sú metódy increment a getCount synchronizované, aby sa zabránilo súčasnému prístupu a podmienkam pretekania.