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.