Решил задачу не так, как прописано в требованиях, а так, как сам понял тему:
1. После того как производитель делает поставку (put), устанавливаю флаг в true и в цикле заставляю нить производителя ждать.
2. Как только нить потребителя съедает продукт, я устанавливаю флаг в false освобождаю нить производителя.
Вывод у меня корректный. Не могу сообразить, зачем нужна та логика, что прописана в требованиях (как в put, так и в get и блокировать, и освобождать нити)?
package com.javarush.task.task27.task2709;
/*
Producer–consumer
*/
public class Solution {
public static void main(String args[]) throws InterruptedException {
TransferObject transferObject = new TransferObject();
ProducerTask producerTask = new ProducerTask(transferObject);
ConsumerTask consumerTask = new ConsumerTask(transferObject);
Thread.sleep(5);
producerTask.stop();
consumerTask.stop();
}
}