Доброго времени суток, странное дело происходит с этой задачей.
Реализовывал несколькими способами, но валидатор в итоге принял вариант, в котором вывод правильный но после вывода нити продолжают работать и программа не завершается.
Для примера код Consumer
try {
Thread.sleep(450);
}
catch (InterruptedException e) { }
while (!Thread.currentThread().isInterrupted()) {
ShareItem item = null;
try {
item = queue.take();
System.out.format("Processing %s\n", item.toString());
}
catch (InterruptedException e) { }
}