2013-12-11 2 views
0

Можете ли вы предложить мне алгоритмы для планирования независимых параллельных задач. Каждая задача имеет время выполнения и частоту. Также существует максимальное количество задач, которые могут выполняться параллельно.Алгоритм планирования независимых параллельных задач

+0

Вы изучили кварц http://quartz-scheduler.org/ – sadhu

+0

Да, но я хочу оптимизированный алгоритм планирования задач – user3090011

+1

Почему Вы думаете, что кварц не оптимален? Кстати, вам, возможно, придется определить свои контрольные показатели оптимизации до разработки алгоритма – sadhu

ответ

0

Я не знаю, что вы можете захотеть с помощью «алгоритмов» для этого, большая часть фактической алгоритмической работы выполняется на очень низком уровне в JVM посредством потоковой передачи, что становится довольно сложным, чем больше вы входите в него (до того момента, когда вы смотрите на то, что делает настоящий физический процессор).

Что-то вы могли бы быть заинтересованы в тех инструментах, уже предоставленные основные библиотеки Java для этого:

Вы можете использовать любое желаемое количество Thread с, что каждый может взять на себя части рабочей нагрузки; вы также можете планировать партии меньших задач для работы на фиксированном количестве потоков с ThreadPoolExecutor, которые могут быть предоставлены с любым количеством задач, которые затем будут выполняться, когда это возможно, определенным количеством потоков.

Если вам действительно нужно запланировать/задержать эти задачи, вы также можете использовать какой-либо другой вариант ExecutorService, такой как ScheduledThreadPoolExecutor, который может выполнять и даже повторно выполнять различные команды при заранее определенных задержках с ограниченным пулом потоки.

Если у вас как-то почти нет доступа к базовым библиотекам Java, настоятельно рекомендуется использовать их или что-то подобное, поскольку они, вероятно, будут работать с меньшими усилиями, более надежно и, вероятно, быстрее, чем изобретать колесо самостоятельно.

+0

, например http://www.dmtcs.org/pdfpapers/dm030403.pdf – user3090011

0

Использование кварцевых часов. Это дает вам возможность планировать N параллельных заданий с каждой независимой задержкой запуска и частотой повторения. Кроме того, у вас также может быть задание cron для ваших задач. Вы можете развернуть его с помощью войны или фляги или из простой функции класса java.

Смежные вопросы