Junior — Middle
Da li se u praksi koriste mehanizmi kao što su synchronized, wait i notifyAll za upravljanje nitima?
sobes.tech АИ
Одговор од АИ
Да, у пракси програмирања на Јава, механизми као што су synchronized, wait и notifyAll се користе за управљање нитима, посебно у случајевима када је потребно реализовати ниско ниво синхронизације и координације између нитова.
- synchronized се користи за обезбеђивање међусобног искључења приликом приступа заједничким ресурсима.
- wait() доводи до тога да тренутни нит чека, ослобађајући монитор, док други нит не позове notify() или notifyAll().
- notifyAll() буди све нитове који чекају на том објекту.
Међутим, у модерним апликацијама се чешће користе виши нивои алата из пакета java.util.concurrent (нпр. Lock, Semaphore, CountDownLatch), јер су флексибилнији и згоднији.
Пример коришћења synchronized, wait и notifyAll:
class SharedResource {
private boolean ready = false;
public synchronized void waitForReady() throws InterruptedException {
while (!ready) {
wait();
}
// наставити са радом
}
public synchronized void setReady() {
ready = true;
notifyAll();
}
}