Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在另一个线程组中执行线程组?_Java_Multithreading_Parallel Processing_Jmx - Fatal编程技术网

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

Java 如何在另一个线程组中执行线程组?,java,multithreading,parallel-processing,jmx,Java,Multithreading,Parallel Processing,Jmx,我有一个场景,在这个场景中,我必须注册一些用户,然后以注册用户的数量与线程并行运行,并由所有用户并行执行相同的操作集。为此,我有一个jmx,它有几个操作,这些操作只应该在一个设置线程中发生一次,一个线程计数,另一个线程组运行5个线程,这是以前注册的用户数,我使用这些用户执行一些操作。 现在我想使用5个线程并行执行整个场景 我是如何做到这一点的 我使用了include控制器,但是线程组没有按预期执行,我没有得到在包含的jmx中5个线程组中发生的25次迭代。我不确定您在做什么,我对jmx知之甚少,但

我有一个场景,在这个场景中,我必须注册一些用户,然后以注册用户的数量与线程并行运行,并由所有用户并行执行相同的操作集。为此,我有一个jmx,它有几个操作,这些操作只应该在一个设置线程中发生一次,一个线程计数,另一个线程组运行5个线程,这是以前注册的用户数,我使用这些用户执行一些操作。 现在我想使用5个线程并行执行整个场景

我是如何做到这一点的


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

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

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

第二种情况是,在所有线程完成工作之前,您可能正在显示停止程序的结果或事件。这在单核机器上是最糟糕的,但是线程可以并且确实可以以任何可以想象的顺序运行,并且以一些不可以想象的顺序运行。他们可以一次运行一个,最后启动的一个先运行。一个人可以在中间停下来,让其他人跑完了,然后重新开始。一个集群可以在不同的内核上同时运行,也可以快速交换,而其他集群则什么都不做

我建议在System.out.println中加入一堆日志/输出语句,自己看看发生了什么。你需要一段时间来理解你的输出,但一旦你做到了,你就可以开始控制事情了