Интерфейс ExecutorService отделяет отправку задачи на выполнение от непосредственно самого выполнения. По сравнению с использованием потоков и интерфейсом Runnable удобно то, что с помощью
модель программирования WIMP (https://ru.wikipedia.org/wiki/WIMP) Windows 95 и более поздних версий. Если вкратце, то любая сущность представляет собой объект
Сначала у вас может возникнуть мысль: «Ну зачем они опять меняют мой язык?» Но потом, после начала работы с новыми функциями, вы обнаружите, что благодаря им пишете более краткий и чистый код вдвое быстрее, чем раньше, — и осознаете, что уже не хотите возвращаться к «старому Java».
Преимущество секционирования в том, что сохраняются оба списка элементов потока данных, применение к которым секционирующей функции дает true или false. В предыдущем примере получить список невегетарианских блюд можно путем извлечения значений для ключа false ассоциативного массива partitionedMenu, вместо того чтобы задействовать две отдельные операции фильтрации: одну с вышеупомянутым предикатом, а вторую — с его отрицанием.
Двумя аргументами фабричного метода Collectors.groupingBy, с помощью которых в предыдущем разделе мы манипулировали элементами групп, можно воспользоваться и для группировки второго уровня. Для этого можно передать внешнему методу groupingBy второй внутренний groupingBy, задав в нем критерий второго уровня для классификации элементов потока