Junior — Middle
Worden in de praktijk mechanismen zoals synchronized, wait en notifyAll gebruikt voor het beheren van threads?
sobes.tech AI
Antwoord van AI
Ja, in de Java-programmeermethode worden de mechanismen synchronized, wait en notifyAll gebruikt om threads te beheren, vooral in gevallen waarin lage-niveau synchronisatie en coördinatie tussen threads nodig zijn.
- synchronized wordt gebruikt om wederzijdse uitsluiting te garanderen bij toegang tot gedeelde bronnen.
- wait() zorgt ervoor dat de huidige thread wacht, terwijl het monitor wordt vrijgegeven, totdat een andere thread notify() of notifyAll() aanroept.
- notifyAll() wekt alle threads die wachten op dat object.
Echter, in moderne toepassingen worden vaker hogere niveaus van hulpmiddelen uit de java.util.concurrent-pakket gebruikt (bijvoorbeeld Lock, Semaphore, CountDownLatch), omdat deze flexibeler en handiger zijn.
Voorbeeld van gebruik van synchronized, wait en notifyAll:
class SharedResource {
private boolean ready = false;
public synchronized void waitForReady() throws InterruptedException {
while (!ready) {
wait();
}
// werk verder
}
public synchronized void setReady() {
ready = true;
notifyAll();
}
}