如何在另一个线程组中执行线程组?

时间:2012-06-06 09:57:00

标签: java multithreading parallel-processing jmx

我有一个场景,我必须注册一些用户,而不是与线程并行运行作为注册用户的数量,并由所有用户并行执行相同的一组操作。对于这个我有一个jmx,几个动作只应该发生一次(在一个线程计数的安装线程中)和另一个运行5个线程的线程组,这是先前注册用户的数量,我执行一些操作使用这些用户。 现在我想使用5个线程并行执行整个场景。

我该怎么做呢?

我使用了include控制器,但线程组没有按预期执行,我没有对包含的jmx中5个线程组中发生的操作进行25次迭代。

1 个答案:

答案 0 :(得分:0)

我不确定你在做什么,我对jmx知之甚少,但这里有几个想法。一个(或两个)可能是相关的。

第一个是你的线程可能正在共享一个实例字段。例如,如果他们有一个共同的计数器,你会做5次而不是25次。确保您的公共变量(实例和类字段)已正确同步。尽可能使用局部变量。当的值适用于每个线程而不是所有线程时,必须使用它们。

第二个是你可能在所有线程完成工作之前显示结果 - 或者停止程序的事件。它在单核机器上是最糟糕的,但线程可以并且确实以任何可想象的顺序运行,并且在少数订单中运行。他们可以一次运行一个,最后一个先运行。一个人可以在中间停下来,让所有其他人跑完,然后重新开始。一堆可以同时运行(在不同的核心上或快速交换),而其他人什么都不做。

我建议输入一堆日志/输出语句(System.out.println就足够了)并亲眼看看发生了什么。你需要一段时间来理解你的输出,但一旦你这样做,你就能够开始控制事物。