Java 试图一次使用100个线程。

Java 试图一次使用100个线程。,java,multithreading,Java,Multithreading,我正在创建一个测试工具来测试Web服务的性能。现在我想在100个用户点击这个web服务时测试我的工具的性能。 在当前版本中,我创建了一个线程,它加热并在日志中显示请求-响应详细信息。但是我需要创建100个并行工作的线程,并显示100个线程的请求响应。 我的问题是如何创建100个并行线程。这里我尝试创建100线程并行,但当我运行这个程序时,它不会调用run方法 这是我的密码 public class Main implements Runnable { int counter= 0; publi

我正在创建一个测试工具来测试Web服务的性能。现在我想在100个用户点击这个web服务时测试我的工具的性能。 在当前版本中,我创建了一个线程,它加热并在日志中显示请求-响应详细信息。但是我需要创建100个并行工作的线程,并显示100个线程的请求响应。 我的问题是如何创建100个并行线程。这里我尝试创建100线程并行,但当我运行这个程序时,它不会调用run方法

这是我的密码

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个线程,所有其他线程都必须等待。但做出回应的时间仍在计算中。