Знакомство с Executors 1. В методе main создай фиксированный пул из 5 трэдов используя класс Executors. 2. В цикле отправь на исполнение в пул 10 задач Runnable. 3. У каждой задачи в методе run вызови метод doExpensiveOperation с порядковым номером задачи начиная с 1, см. пример вывода. 4. Запрети добавление новых задач на исполнение в пул (метод shutdown). 5. Дай пулу 5 секунд на завершение всех задач (метод awaitTermination и параметр TimeUnit.SECONDS). Требования: 1. Используя класс Executors, создай в методе main фиксированный пул из 5 трэдов. 2. Пул должен принимать на исполнение 10 задач Runnable. 3. Каждая задача должна вызывать метод doExpensiveOperation с порядковым номером задачи, начиная с 1. 4. Запрети добавление новых задач на исполнение в пул. 5. На завершение всех задач в пуле нужно установить 5 секунд. ExecutorService service = Executors.newFixedThreadPool(5); //Создал фиксированный пул на 5 трэдов //с этим вариантов в консоль выводится только 5 строк for (int i = 0; i < 10; i++) { final int localID = i++; service.submit(() -> doExpensiveOperation(localID)); } //с этим вариантов в консоль выводится 10 строк for (int i = 1; i < 11; i++) { final int localID = i; service.submit(() -> doExpensiveOperation(localID)); } service.shutdown(); //запретил добавление новых задач на исполнение. service.awaitTermination(5, TimeUnit.SECONDS); //дал пулу 5 секунд на завершение всех задач По заданию требовалось кинуть в пул из пяти трэдов 10 заданий на исполнение. При первом варианте в консоль выводятся только пять сообщений/заданий и валидацию задача не проходит. При втором варианте в консоль выводятся все десять сообщений/заданий и валидацию задача проходит. Привычнее в цикле for отсчет вести с нуля и, при необходимости, инкрементить счетчик для дальнейших вычислений (1-й вариант). Но почему получается разница в количестве отработанных задач, я не понимаю. Прошу объяснить