The material is intended to supplement the textbook by providing further examples and discussion. It is not self-standing, but assumes that you have a copy of the book to hand.
There have been minor addition to Producer and Consumer. The run method of Producer now produces a sequence of integer values as fast as it can while Consumer waits for 1 second before it takes each item. The consumer then displays what it has taken.
From the values ouput, we see that no items are lost and so the rate of production by Producer is controlled by how fast Buffer is able to accept the items. That, in turn, is controlled by the rate at which Consumer takes items from Buffer.
The HTML file is held here.
You can run the example from here.