powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Посоветуйте multithread-шаблон
7 сообщений из 7, страница 1 из 1
Посоветуйте multithread-шаблон
    #37977793
shainsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть N однотипных упорядоченных задач, которые должны выполняться в M потоков.
На каждое задание отводится не более L секунд, по их истечению выполнение должно прерываться.
Посоветуйте подходящий шаблон проектирования (или готовую реализацию).
...
Рейтинг: 0 / 0
Посоветуйте multithread-шаблон
    #37978072
ResidentR6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть обычные реализации типа серьёзных фреймворков.
А если не заморачиваться - погугли понятие "пул потоков", под это есть
свои классы.

А вот с таймаутами так предвзято не относись. Если задача реальная (не
учебная), то за каждым таймаутом стоит что-то недоделанное, какая-то
реакция, нужно собрать какую-то статистику, избегать (перехватывать)
срать в лог типичными таймаутами (типа сетевой ошибки).

Ставить таймаут на весь поток некошерно. Таймаут нужно ставить именно на
ту операцию, где он может произойти. И оттуда же выкидываешь свой класс
эксепшена, который сам же потом ловишь и сам же знаешь как именно его
обработать, как именно его логировать, как показывать для системы
мониторинга.

Если поставишь таймаут на поток, то скроешь в будущем возможные ошибки.
Если таймаута нет, увидишь где потоки блокируются. Но если он есть -
ошибку двойной блокировки не поймаешь. А шансы на неё нарваться есть
всегда, и тем выше чем сложнее логика.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Посоветуйте multithread-шаблон
    #37978079
ResidentR6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сути задача сделать своего наследника Thread, и засунуть их в обычный
пул потоков.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Посоветуйте multithread-шаблон
    #37978119
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResidentR6По сути задача сделать своего наследника Thread, и засунуть их в обычный
пул потоков.

Всё нужное для запуска уже есть в ExecutorServices. Но на счет того как именно контролировать выполнение, вы правы. Нужно выбирать стретегию в зависимости от конкретики.
Начать стоит, конечно же с CancellableTask.
...
Рейтинг: 0 / 0
Посоветуйте multithread-шаблон
    #37978130
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shainskyНа каждое задание отводится не более L секунд, по их истечению выполнение должно прерываться.
Посоветуйте подходящий шаблон проектирования (или готовую реализацию).
Тут нужно очень много конкретики значть, чтобы выбрать правильное решение. Что именно делают ваши задачи?
Вопросы примерно следующие
- Может ли задача прервать себя сама, проверяя таймер на некоторых этапах?
- Какие ресурсы задача потребляет CPU или IO ? IO проще прервать по interrupt.
- На сколько критична вариация по времени?

А так, берите ExecutorService, CancellableTask и какой-нибудь таймер. При запуске таски, устанавливаете таймер на нужное время, таймер проверяет время и решает выставить ли таске флаг Canceled.
...
Рейтинг: 0 / 0
Посоветуйте multithread-шаблон
    #37978473
shainsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Да, спасибо, я уже тоже нагуглил ExecutorService. "Покурю" CancellableTask.
Задачи - чтение из стороннего URL.
...
Рейтинг: 0 / 0
Посоветуйте multithread-шаблон
    #37978495
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shainskyДа, спасибо, я уже тоже нагуглил ExecutorService. "Покурю" CancellableTask.
Задачи - чтение из стороннего URL.
Тогда interrupt надо использовать, чтобы блокирующее IO выкидывало исключение и обрабатывалось. Надо только посмортреть, чтобы поток при этом дальше использовался в пуле нормально.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Посоветуйте multithread-шаблон
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]