Решил задачу не так, как прописано в требованиях, а так, как сам понял тему: 1. После того как производитель делает поставку (put), устанавливаю флаг в true и в цикле заставляю нить производителя ждать. 2. Как только нить потребителя съедает продукт, я устанавливаю флаг в false освобождаю нить производителя. Вывод у меня корректный. Не могу сообразить, зачем нужна та логика, что прописана в требованиях (как в put, так и в get и блокировать, и освобождать нити)?