Junior — Middle
Kasutatakse praktikas selliseid mehhanisme nagu synchronized, wait ja notifyAll niitide juhtimiseks?
sobes.tech AI
Vastus AI-lt
Jah, Java programmeerimise praktikas kasutatakse mehhanisme synchronized, wait ja notifyAll niitide haldamiseks, eriti olukordades, kus on vaja rakendada madala taseme sünkroniseerimist ja koordineerimist niitide vahel.
- synchronized kasutatakse ühiste ressursside juurdepääsu vastastikuse välistamise tagamiseks.
- wait() paneb praeguse niidi ootama, vabastades monitori, kuni teine niit kutsub välja notify() või notifyAll().
- notifyAll() äratab kõik selle objekti ootavad niidid.
Kuid kaasaegsetes rakendustes kasutatakse sageli kõrgema taseme tööriistu java.util.concurrent paketist (näiteks Lock, Semaphore, CountDownLatch), kuna need on paindlikumad ja mugavamad.
Näide synchronized, wait ja notifyAll kasutamisest:
class SharedResource {
private boolean ready = false;
public synchronized void waitForReady() throws InterruptedException {
while (!ready) {
wait();
}
// töö jätkamine
}
public synchronized void setReady() {
ready = true;
notifyAll();
}
}