Java Reference
In-Depth Information
20
// execute the Producer and Consumer tasks
21
executorService.execute( new Producer(sharedLocation));
executorService.execute( new Consumer(sharedLocation));
22
23
24
executorService.shutdown();
25
executorService.awaitTermination( 1 , TimeUnit.MINUTES );
26
}
27
} // end class SharedBufferTest2
Operation Buffer Occupied
--------- ------ --------
Consumer tries to read.
Buffer empty. Consumer waits.
-1 false
Producer writes 1 1 true
Consumer reads 1 1 false
Consumer tries to read.
Buffer empty. Consumer waits.
1 false
Producer writes 2 2 true
Consumer reads 2 2 false
Producer writes 3 3 true
Consumer reads 3 3 false
Producer writes 4 4 true
Producer tries to write.
Buffer full. Producer waits.
4 true
Consumer reads 4 4 false
Producer writes 5 5 true
Consumer reads 5 5 false
Producer writes 6 6 true
Producer tries to write.
Buffer full. Producer waits.
6 true
Consumer reads 6 6 false
Producer writes 7 7 true
Producer tries to write.
Buffer full. Producer waits.
7 true
Consumer reads 7 7 false
Producer writes 8 8 true
Consumer reads 8 8 false
Consumer tries to read.
Buffer empty. Consumer waits.
8 false
Fig. 23.17 | Two threads correctly manipulating a synchronized buffer. (Part 2 of 3.)
Search WWH ::




Custom Search