Существует интерфейс SynchronousProducer , который поддерживает две операции:
public interface SynchronousProducer<ITEM> {
/**
* Produces the next item.
*
* @return produced item
*/
ITEM next();
/**
* Tells if there are more items available.
*
* @return true if there is more items, false otherwise
*/
boolean hasNext();
}
Потребитель спрашивает производителя, есть ли еще доступные элементы, и если ни один не входит в последовательность выключения.
Теперь следует за вопросом.
На данный момент существует цикл for-l oop, который действует как производитель:
for (ITEM item: items) {
consumer.consume(item);
}
Задача состоит в том, чтобы преобразовать управляющий код в следующее:
while (producer.hasNext()) {
consumer.consume(producer.next())
}
consumer.shutdown();
Вопрос. С учетом предметов : как написать производителю, реализующему SynchronousProducer интерфейс и дублирующему логи c для for-l oop, показанным выше?