JavaRush /Курсы /Java Multithreading /Задачи на пул потоков

Задачи на пул потоков

Java Multithreading
8 уровень , 8 лекция
Открыта

— Привет, Амиго!

16
Задача
Java Multithreading, 8 уровень, 8 лекция
Недоступна
Знакомство с Executors
1. В методе main создай фиксированный пул из 5 трэдов используя класс Executors. 2. В цикле отправь на исполнение в пул 10 задач Runnable. 3. У каждой задачи в методе run вызови метод doExpensiveOperation с порядковым номером задачи начиная с 1, см. пример вывода. 4. Запрети добавление новых задач н
16
Задача
Java Multithreading, 8 уровень, 8 лекция
Недоступна
Знакомство с ThreadPoolExecutor
1. В методе main создай очередь LinkedBlockingQueue<Runnable>. 2. В цикле добавь в очередь 10 задач Runnable. 3. У каждой задачи в методе run вызови метод doExpensiveOperation с порядковым номером задачи начиная с 1, см. пример вывода. 4. Создай объект ThreadPoolExecutor со следующими параметрами: -
9
Задача
Java Multithreading, 8 уровень, 8 лекция
Недоступна
ShutdownNow!
Разберись в чем отличие методов shutdown и shutdownNow. Выведи список всех незавершенных задач на экран. Должно получиться что-то вроде: pool-1-thread-1, localId=1 pool-1-thread-2, localId=2 pool-1-thread-3, localId=3 pool-1-thread-4, localId=4 pool-1-thread-5, localId=5 java.util.concurrent.Future
Комментарии (71)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Virgilion Уровень 41
15 октября 2024
Подскажите по задачке: Знакомство с ThreadPoolExecutor. Не проходит условие 2: "В цикле добавь в очередь 10 задач Runnable". "Ошибку" я понял, использую метод "put", а не "add"(унаследованный от AbstractQueue). В связи с чем вопрос: а в реальности какой метод нужно использовать? Ведь по сути, разница в том, что "add" кидает исключение если нет места в очереди, а "put" ждет появление этого места. Но условие "ДОБАВИТЬ задачи в очередь", а не "ПОПРОБОВАТЬ добавить")
Kirill Уровень 46
4 декабря 2024
Всё зависит от того, какого поведения ты хочешь добиться. Например метод put() у интерфейса BlockingQueue гарантировано добавит задачу в очередь. Но при этом он является блокирующим, и если задач много, они тяжеловесные и потоки из пула с ними не справляются, приложение просто повиснет. Метод add() наоборот, реализован неблокирующим, и в случае, когда очередь переполнена, он выбросит IllegalStateException. Но при этом сохраняется возможность повесить на пул потоков обработчик отклонённых задач при помощи метода setRejectedExecutionHandler() класса ThreadPoolExecutor. Например, можно их собрать в коллекцию, после чего снова попытаться позже отправить на исполнение. Соответственно, использование метода add() является более гибким подходом.
Denis Odesskiy Уровень 47
30 мая 2024
О, это замечательные утилиты для многопоточности. Немного имел ранее с ними дело. Очень мощные, хорошо настраивать, и простые в применении. Также там замечательные есть классы/интерфейсы Callable и Future и Completablefuture, для асинхроннки, вещь просто незаменимая и необычайно гибкая.
26 апреля 2024
Вот нормальные задачи, кайф. И понял как работает и закрепил на примерчике. Так бы все лекции были.
Мирослав Уровень 37 Expert
21 апреля 2024
Пойди туда, не зная куда...... и т.д 1 2 без теории которую нужно искать, не решить
Алексей Уровень 40 Expert
20 февраля 2024
Отличные задачи, пришлось покапаться но все понял в итоге)
Lo Уровень 35 Expert
7 января 2024
Описание задач супер! Бывали задачи намного проще и легче, где я смотрела готовое решение, просто потому, что ни фига не поняла что хотят. А эти хоть и сложные в понимании материала,но решила сама с удовольствием.
Jerry Уровень 46
24 января 2022
По первой задаче аналогичный цикл с лямбдой фейлится. Свинство....

executorService.execute(() -> doExpensiveOperation(localId));
Кирилл Уровень 35
11 апреля 2022
через submit все проходит
Zhenya Workout Уровень 43
20 марта 2023
Почему execute, если submit нужно использовать?
Ars Уровень 41
28 октября 2021
Инфа по последней задаче: Среднее количество попыток для этой задачи 2.25. Всего эту задачу решили 6502 учеников.
Виктор Уровень 1
3 октября 2022
это очень странно, потому что у меня на 03.10.2022 написано, что "Всего эту задачу решили 5599 учеников." Задача называется "ShutdownNow!" из пакета package com.javarush.task.task28.task2812;
Baixa Уровень 43
7 октября 2021
Отличные задачи, даже решение не смотрел
Larisa Уровень 1
23 января 2022
В смысле?? А так можно было?? )
Алексей Уровень 35
24 августа 2021
Задачки "на пощупать" потоки и очереди.