Junior — Middle
Практически използват ли се механизми като synchronized, wait и notifyAll за управление на нишки?
sobes.tech AI
Отговор от AI
Да, в практиката на програмиране на Java механизмите 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();
}
}