Akými metódami možno zabezpečiť bezpečný prístup k jednému objektu alebo jeho poľu z viacerých vlákien súčasne?
sobes.tech AI
Odpoveď od AI
Za zabezpečenie bezpečného prístupu k objektu alebo jeho poľu z viacerých vlákien v Jave sa používajú rôzne metódy synchronizácie:
-
Kľúčové slovo
synchronized— umožňuje synchronizovať metódy alebo bloky kódu tak, aby ich mohol vykonávať iba jedno vlákno naraz. -
Triedy z balíka
java.util.concurrent, napríkladReentrantLock— flexibilnejší mechanizmus zámkov. -
Volatile polia — zabezpečujú viditeľnosť zmien v premennej medzi vláknami, ale nezaručujú atomickosť zložitých operácií.
-
Atómové triedy (
AtomicInteger,AtomicReferenceatď.) — poskytujú atomické operácie bez zámkov. -
Nemenné objekty — ak je objekt nemenný, je bezpečný na prístup z viacerých vlákien bez synchronizácie.
Príklad s synchronized:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Tento prístup zabezpečuje, že operácie nad count budú atomické a vlákna bezpečné.