Junior — Middle
Hoe werkt het synchronized-mechanisme wanneer het wordt gebruikt met een statische functie in de context van een monitor?
sobes.tech AI
Antwoord van AI
Wanneer een methode wordt gedeclareerd als synchronized static in Java, wordt de monitor (lock) op klasse-niveau genomen, niet op instantie-niveau. Dit betekent dat bij het aanroepen van zo'n methode de thread de monitor van de klasse (Object Class) blokkeert, en geen andere threads tegelijkertijd andere statische gesynchroniseerde methoden van dezelfde klasse kunnen uitvoeren.
Voorbeeld:
public class Example {
public static synchronized void staticSyncMethod() {
// blokkeert de monitor van de klasse Example.class
// kritieke sectie
}
}
Dus, synchronized op een statische methode zorgt voor onderlinge uitsluiting op klasse-niveau, niet op objectniveau. Dit is handig wanneer je toegang tot statische bronnen of variabelen van de klasse wilt synchroniseren.