Мне нужно запустить параллельно несколько потоков, чтобы выполнить некоторые тесты.
Мой «механизм тестирования» будет иметь n тестов, каждый из которых будет выполнять k суб-тестов. Каждый результат теста сохраняется для последующего использования.
Итак, у меня есть n * k процессов, которые можно запускать одновременно.
Я пытаюсь понять, как эффективно использовать параллельные инструменты Java.
Прямо сейчас у меня есть служба исполнителя на уровне теста и n служба исполнителя на уровне под-теста.
Я создаю свой список Callables для тестового уровня.
Затем каждый вызываемый тест создает новый список вызываемых объектов для уровня подтестов.
При вызове тестового вызова впоследствии будут вызываться все вызываемые подтесты
- тест 1
- подтест a1
- подтест ... 1
- подтест k1
- test n
- подтест a2
- подтест ... 2
- подтест k2
последовательность вызовов:
- менеджер тестов создать тест 1 вызываемый
- test1 вызываемый создать подтест от a1 до k1
- testn callable создать подтест к кн
- менеджер тестов вызывает все тестовые вызовы
- test1 вызываемый вызов всех подтестов от a1 до k1
- testn callable вызывает все подтесты к кн
Это работает нормально, но у меня есть много новых созданных протекторов.
Я не могу поделиться службой исполнителя, так как мне нужно вызвать 'shutdown' для исполнителей.
Моя идея исправить эту проблему - предоставить одинаковый пул потоков фиксированного размера для каждой службы исполнителя.
Как вы думаете, это хороший дизайн?
Я скучаю по чему-то более подходящему / простому для этого?