2012-06-06 274 views
1

我有一个场景,我必须注册多个用户,并且与线程并行运行为注册用户的数量,并由所有用户并行执行相同的一组操作。为此,我有一个jmx只有一次应该发生的动作(在一个线程数的设置线程中)以及另一个线程组运行,这个线程组是以5个线程运行的,这是之前注册的用户的数量,我执行一些操作这些用户。 现在我想用5个线程并行执行这个整个场景。如何在另一个线程组中执行线程组?

我该怎么做?

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

回答

0

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

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

其次,您可能会在所有线程完成工作之前显示结果或停止程序的事件。这在单核机器上是最糟糕的,但是线程可以并且可以按照任何可以想象的顺序运行,并且在几个不是的命令中运行。他们可以一次运行一个,最后一个开始运行。一个人可以在中间停下来,让所有其他人跑完,然后重新开始。一堆可以同时运行(在不同的内核上或快速交换),而其他内容则什么也不做。

我建议把一堆日志记录/输出语句(System.out.println足够好),并为自己看看发生了什么。它会花费你一段时间来理解你的输出,但是一旦你这样做了,你就可以开始把事情控制住了。

相关问题