Kunt u het concept van monitor in Java en de rol ervan in thread-synchronisatie uitleggen?
sobes.tech AI
Antwoord van AI
In Java is de monitor een synchronisatie-mechanisme dat onderlinge uitsluiting (mutex) biedt bij toegang tot gedeelde bronnen tussen threads. Elk object in Java heeft een bijbehorende monitor.
Wanneer een thread een gesynchroniseerde blok of methode binnenkomt (bijvoorbeeld met het sleutelwoord synchronized), verwerft het de monitor van het object. Zolang de monitor in gebruik is, worden andere threads die proberen hetzelfde gesynchroniseerde blok of methode van hetzelfde object binnen te gaan, geblokkeerd en wachten ze tot de monitor wordt vrijgegeven.
Dit garandeert dat slechts één thread tegelijk de kritieke sectie van de code uitvoert, racecondities voorkomt en de gegevensintegriteit waarborgt.
Voorbeeld:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Hier zijn de methoden increment en getCount gesynchroniseerd, dat wil zeggen, ze gebruiken de monitor van het Counter-object om toegang tot de variabele count te beschermen.