试图一次使用100个线程。

时间:2012-10-02 05:47:59

标签: java multithreading

我正在创建一个测试工具来测试Web服务的性能。现在,我希望在100个用户点击此Web服务时测试我的工具的性能 在Current中,我创建了一个加热的线程,并在日志中显示请求 - 响应详细信息。但我需要创建100个并行工作的线程,并向我显示100个线程的请求 - 响应 我的问题是如何创建100 parallel thread's。在这里我尝试创建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();
   }
 }
}

给我一​​些提示或参考。我不明白我错在哪里 在此先感谢。

4 个答案:

答案 0 :(得分:5)

您没有实例化您的线程类 - 恰好是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();
        }
    }
}

答案 1 :(得分:4)

你可能意味着t[j]=new Thread(new Main())

答案 2 :(得分:3)

我建议你使用ExecutorService来管理你的线程,你可以将Runnable作为任务提交给这个池。

答案 3 :(得分:1)

我建议您使用Apache JMeter进行Web服务测试。它已经具有请求/响应的并行线程功能。

反正: 要创建新的线程使用构造函数:

Thread(Runnable target) 

正如你所看到的,线程实现了runnable,另一种方式就是覆盖run方法。

public class Thread implements Runnable