Составители:
10
buf = 20
30
buf = 20
20
20
buf = 40
40
buf = 30
30
buf = 40
40
30
buf = 30
40
buf = 40
Объект класса Buffer представляет собой буфер для хранения
единственного значения. Экземпляры класса PutThread записыва-
ют в буфер числа 10, 20, 30, 40, а экземпляры класса GetThread пы-
таются прочесть из буфера 12 чисел и вывести их на экран. Програм-
ма BufferExample создает объект-буфер, три объекта PutThread,
один объект GetThread и запускает все четыре потоковых объекта
на выполнение. Рассмотрим схему работы класса BufferExample
[6]. Если первым будет выполняться поток p1, последовательность
действий может быть следующей:
o Поток p1 вызывает метод put(10) и получает доступ к этому
методу, так как методы get() и put() данного объекта
Buffer не используются никаким другим потоком.
o Метод put(10) проверяет флаг full и так как full=false,
записывает в буфер значение 10, после чего устанавливает флаг
full в true и вызывает метод notifyAll(). Поскольку
ожидающих потоков нет, вызов notifyAll() не производит
должного эффекта. Выполнение метода put() завершается,
70
Страницы
- « первая
- ‹ предыдущая
- …
- 68
- 69
- 70
- 71
- 72
- …
- следующая ›
- последняя »