你可以给线程加个参数CounterThread(int i)
则启动10这样的线程就是:
while(int i=0;i<10;i++) {
  CounterThread th = new CounterThread(i);
  th.start();//这就成了
}

解决方案 »

  1.   

    class abc extends Thread{
    public void run(){
      ===========
      ===========
      ===========
    }
    }


    abc a1=new abc();
    a1.start();线程必须重载run方法,RUN既为线程的执行体
      

  2.   

    我初学java,看得不太明白,我本意是让若干个CounterThread的实例调用start()达到同时运行,但楼上说的具体怎么加参数??是重载构造函数吗?望详述
      

  3.   

    Java的线程是这样:
    调用者通过调用继承Thread的类的start,将线程挂入线程队列,然后系统在获得控制权时,从队列中选取一个线程执行其run。所以不能重载start,而是应该重载run,在run中进行相应的操作。
      

  4.   

    多线程使用共同资源时可使用Synchronized关键字
      

  5.   

    你可以考虑设置一个共享型信号量做判断条件决定是否开始
    循环;若非所有线程的start()方法都已被调用时,只是
    简单地阻塞而已;
    当最后一个线程被创建时,将此条件设为真即可。
      

  6.   

    www-900.ibm.com/developerWorks/cn/java/threadsafe/threadcode.html
                    synchronized private void populateTable() {
    File workingDir = new File(dirName);
    String[] listOfFiles = workingDir.list();
    if (listOfFiles.length != 0) {
      for (int i=0; i < listOfFiles.length; i++) {
        if(! assignedWork.contains(listOfFiles[i])) {
          newWork.addElement( listOfFiles[i] );
        }
      }
      notifyAll();
    }
    }synchronized关键字用于上述函数的作用是什么?
      

  7.   

    在函数里,使用synchronized是不是为了取得newWork和assignedWork的监视器,如果改成   
    for (int i=0; i < listOfFiles.length; i++) {
      synchronized(WorkTable.Class()){
        if(! assignedWork.contains(listOfFiles[i])) {
          newWork.addElement( listOfFiles[i] );
        }
      }
    }
    不行吗?