Я чувствую, что мне нужно немного расширить свой комментарий ...
О парадигме \ стиле
Это, наверное, самый заметный аспект. FP стал популярным благодаря тому, что вы можете избежать побочных эффектов. Я не буду углубляться в то, какие плюсы и минусы вы можете получить от этого, так как это не связано с вопросом.
Однако я скажу, что итерация с использованием Iterable.forEach основана на FP и скорее является результатом добавления большего количества FP в Java (как ни странно, я бы сказал, что forEach в чистом FP не имеет большого смысла, поскольку он ничего не делает, кроме как представляет побочные эффекты).
В конце я бы сказал, что это скорее вопрос вкуса \ стиля \ парадигмы, в котором вы сейчас пишете.
О параллелизме.
С точки зрения производительности нет никаких обещанных заметных преимуществ от использования Iterable.forEach по сравнению с foreach (...).
Согласно официальным документам на Iterable.forEach :
Выполняет данное действие над содержимым Iterable, в котором элементы порядка появляются при итерации, пока все элементы не будут обработаны или действие не выдаст исключение.
... т.е. документы в значительной степени ясно, что не будет никакого неявного параллелизма. Добавление одного будет нарушением LSP.
Теперь есть «параллельные коллекции», которые обещаны в Java 8, но для работы с ними вам нужно быть более явным и уделить особое внимание их использованию (см., Например, ответ mschenk74).
КСТАТИ: в этом случае будет использоваться Stream.forEach , и это не гарантирует, что фактическая работа будет выполняться в параллель (зависит от базовой коллекции).
ОБНОВЛЕНИЕ: может быть не так очевидно и немного растянуто, но есть еще один аспект стиля и читабельности.
Прежде всего - старые добрые петли бывают простыми и старыми. Все уже знают их.
Второе, и более важное - вы, вероятно, хотите использовать Iterable.forEach только с однострочными лямбдами. Если «тело» становится тяжелее - они, как правило, не очень читабельны. У вас есть 2 варианта отсюда - использовать внутренние классы (yuck) или использовать обычный старый forloop. Людей часто раздражает, когда они видят, что одни и те же вещи (итерации над коллекциями) выполняются различными способами / стилями в одной и той же кодовой базе, и, похоже, это так.
Опять же, это может или не может быть проблемой. Зависит от людей, работающих над кодом.