Составители:
}
}
Следует учесть, что синхронизированные методы выполняются мед-
леннее несинхронизированных. В качестве примера использования
синхронизированных методов внутри класса рассмотрим нижеприве-
денный код [6].
// BufferExample.java
// Координация потоков, записывающих в буфер и читающих из буфера
// с использованием методов wait() и notifyAll()
// Класс, представляющий буфер для хранения одного значения
class Buffer {
private int value = 0;
private boolean full = false; // буфер пуст
public synchronized void put(int a)
throws InterruptedException {
while (full)
wait();
value = a;
full = true; // буфер полон
notifyAll();
}
public synchronized int get()
throws InterruptedException {
int result;
while (!full)
wait();
result = value;
full = false;
notifyAll();
return result;
}
67
Страницы
- « первая
- ‹ предыдущая
- …
- 65
- 66
- 67
- 68
- 69
- …
- следующая ›
- последняя »