Java 试图一次使用100个线程。
我正在创建一个测试工具来测试Web服务的性能。现在我想在100个用户点击这个web服务时测试我的工具的性能。 在当前版本中,我创建了一个线程,它加热并在日志中显示请求-响应详细信息。但是我需要创建100个并行工作的线程,并显示100个线程的请求响应。 我的问题是如何创建100个并行线程。这里我尝试创建100线程并行,但当我运行这个程序时,它不会调用run方法 这是我的密码Java 试图一次使用100个线程。,java,multithreading,Java,Multithreading,我正在创建一个测试工具来测试Web服务的性能。现在我想在100个用户点击这个web服务时测试我的工具的性能。 在当前版本中,我创建了一个线程,它加热并在日志中显示请求-响应详细信息。但是我需要创建100个并行工作的线程,并显示100个线程的请求响应。 我的问题是如何创建100个并行线程。这里我尝试创建100线程并行,但当我运行这个程序时,它不会调用run方法 这是我的密码 public class Main implements Runnable { int counter= 0; publi
public class Main implements Runnable
{
int counter= 0;
public static void main(String args[]) throws Throwable
{
Thread t[]=new Thread[100];
for (int j=0; j<100;j++)
{
t[j]=new Thread();
t[j].start();
}
}
public void run()
{
try {
System.out.println("thread "
+Thread.currentThread().getName()+" step "+counter++);
}
catch (Throwable t) {
t.printStackTrace();
}
}
}
给我一些提示或参考。我不明白我错在哪里。
提前感谢。您没有实例化线程类,而线程类恰好是Main
你的班级应该是:
public class Main extends Thread {
int counter= 0;
public static void main(String args[]) throws Throwable {
Main t[] = new Main[100];
for (int j=0; j<100;j++) {
t[j] = new Main();
t[j].start();
}
}
public void run() {
try {
System.out.println("thread " + Thread.currentThread().getName()+" step "+counter++);
}
catch (Throwable t) {
t.printStackTrace();
}
}
}
您的意思可能是t[j]=new Threadnew Main我建议您使用一个来管理您的线程,并且您可以将您的Runnable作为任务提交到此池。我建议您使用Apache JMeter进行Web服务测试。它已经具有请求/响应的并行线程特性 无论如何: 要创建新线程,请使用构造函数:
Thread(Runnable target)
正如您所看到的,线程实现runnable,另一种方法是重写run方法
public class Thread implements Runnable
+ 1,你正在创建线程,这些线程在构造函数中不允许你运行,所以他们什么也不做。这并没有直接解决你的问题,但是基于你的环境,你可以考虑在多个PC上分割这些线程,否则你可能会影响你的结果,因为你的线程可能会彼此阻塞。如果您只有8个真正的内核,那么您只能并行运行8个线程,所有其他线程都必须等待。但做出回应的时间仍在计算中。