Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 如何在运行时获取TestNG线程数_Java_Multithreading_Testng - Fatal编程技术网

Java 如何在运行时获取TestNG线程数

Java 如何在运行时获取TestNG线程数,java,multithreading,testng,Java,Multithreading,Testng,我正在使用TestNG运行测试,但我希望动态限制测试服务器上的负载。 要做到这一点,我想在运行时验证我每秒向服务器发送的请求不超过X个,如果我在上面,那么让线程休眠 我的问题是:如何在运行时获得线程数 我在查看ITestContext,但它似乎不在那里。您可以插入TestNg的“IInvokedMethod方法”,然后使用以下代码 int count = method.getTestMethod().getXmlTest().getThreadCount(); 在正在运行的TestNG标记测

我正在使用TestNG运行测试,但我希望动态限制测试服务器上的负载。 要做到这一点,我想在运行时验证我每秒向服务器发送的请求不超过X个,如果我在上面,那么让线程休眠

我的问题是:如何在运行时获得线程数

我在查看ITestContext,但它似乎不在那里。

您可以插入TestNg的“IInvokedMethod方法”,然后使用以下代码

 int count = method.getTestMethod().getXmlTest().getThreadCount();

在正在运行的TestNG标记测试中,Thread.activeCount()提供当前TestNG组中的线程数。如果threadPoolSize设置为1,则此数字将为1。如果threadPoolSize大于1,则此数字将为threadPoolSize+1,因为除池大小外,还有一个TestNG manager线程。对于动态创建的线程,您需要通过TestNG线程组构造它们。例如:

    Thread aNewWorkerThread = new Thread( Thread.currentThread().getThreadGroup(), yourRunnableThingHere ); 

当这些线程处于活动状态时,它们应该反映在您的Thread.activeCount()返回值中

你真的在并行运行你的线程吗?如果不是,它将始终为1:-)是的,我正在从eclipse运行testng,如果使用java.lang.Thread.activeCount()获取线程总数是不够的(测试方法生成新线程或smth?),那么尝试获取与testng测试线程相关的线程组的计数可能会起作用?但是,这个线程再次产生了被测试的线程,因此它会导致类似的问题。java.lang.thread.activeCount()给出了线程的总数,而不是testNG线程的数量。是的,这是我写的。但是,当您运行测试时,您仅有的线程是测试线程。如果某些测试方法将产生新线程,则它们将位于同一线程组中。