2012-06-06 1 views
1

У меня есть сценарий, в котором я должен зарегистрировать несколько пользователей и выполнить параллель с потоками как количество зарегистрированных пользователей и выполнить одинаковый набор действий всеми пользователями параллельно. для этого у меня есть jmx с несколькими действиями, которые должны произойти только один раз (в установочном потоке с одним количеством потоков) и другой группой потоков, которая работает с 5 потоками, которая является числом ранее зарегистрированных пользователей, и я выполняю некоторые операции, используя этих пользователей. Теперь я хочу выполнить весь этот сценарий параллельно, используя 5 потоков.Как выполнить группу потоков в другой группе потоков?

Как мне это сделать?

Я использовал контроллер включения, но группы потоков не выполняются, как ожидалось, я не получаю 25 итераций для действий, которые происходят в группе 5 нитей в включенном jmx.

ответ

0

Я не совсем уверен, что вы делаете, и я мало знаю о jmx, но вот пара идей. Один (или оба) могут иметь значение.

Первое, что ваши потоки могут делиться полем экземпляра. Например, если у них есть общий счетчик, вы будете делать что-то 5 раз, а не 25 раз. Убедитесь, что ваши общие переменные (поля экземпляра и класса) правильно синхронизированы. По возможности используйте локальные переменные. Вы должны использовать их, когда их значение относится к каждый нить, а не все темы.

Во-вторых, вы можете показывать результаты - или событие, останавливающее программу, - прежде чем все потоки выполнили свою работу. Это худшее на одноядерных машинах, но потоки могут и выполняться в любом порядке, как только можно вообразить, и в нескольких порядках, которых нет. Они могут запускать один за раз, причем первый запускается первым. Можно остановиться посередине, и пусть все остальные закончатся, а затем снова запустите. Сгусток может запускаться одновременно (на разных ядрах или быстро меняться), а другие ничего не делают.

Я предлагаю положить в кучу операторов регистрации/вывода (System.out.println достаточно хорошо) и убедиться в том, что происходит. Понадобится время, чтобы понять ваш результат, но как только вы это сделаете, вы сможете начать контролировать вещи.

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