Welke methoden kunnen veilige toegang tot een object of een veld ervan garanderen vanuit meerdere threads tegelijk?
sobes.tech AI
Antwoord van AI
Om veilige toegang tot een object of een veld ervan uit meerdere threads in Java te garanderen, worden verschillende synchronisatiemethoden gebruikt:
-
Sleutelwoord
synchronized— je kunt methoden of codeblokken synchroniseren zodat slechts één thread ze tegelijk kan uitvoeren. -
Klassen uit de package
java.util.concurrent, bijvoorbeeldReentrantLock— een flexibelere vergrendelingsmechanisme. -
Volatile-velden — garanderen de zichtbaarheid van wijzigingen in de variabele tussen threads, maar bieden geen garantie voor de atomariteit van complexe operaties.
-
Atomische klassen (
AtomicInteger,AtomicReference, enz.) — bieden atomische operaties zonder vergrendeling. -
Onveranderlijke objecten — als een object onveranderlijk is, is het veilig om het te benaderen vanuit meerdere threads zonder synchronisatie.
Voorbeeld met synchronized:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Deze aanpak garandeert dat operaties op count atomair en thread-safe zijn.