各位大大:
 程序中的工作,通过循环来做的话,太费时间,所以决定用线程来实现,大概上百个.
但是我不想100个线程同时进行, 希望让他们5个5个的运行,其他的都wait(), 一个运行完毕后唤醒等待队列中的下一个。不知道该如何控制,请指教,最好给出简单的代码

解决方案 »

  1.   

    那你还不如5个5个的运行,何必wait
      

  2.   

    5个5个的运行的话,有的先完成,有的后完成,浪费时间啊!我想用 wait() notifyAll()来控制他们,但是不会做 :(
    请继续指教
      

  3.   

    就在run方法结束的时候通知啊。进程是主动方或者你可以继续使用这个线程。
      

  4.   

    import java.util.Date;public class Manager
    {
    int free=5;
    public synchronized AbThread createThread()
    {
      if(free>0)
      {
        use();
        return new AbThread(this);
      }
      else
      {
        _wait();
        return null;
      }
    }
    public synchronized  void use(){free--;}
    public synchronized  void free(){free++;}
    public void _wait()
    {
    synchronized(this)
    {
    try
    {
    wait();
    }catch(InterruptedException e)
    {
    e.printStackTrace();
    }
    }
    }
    public void _notify()
    {
    synchronized(this)
    {
    notify();
    }
    }
       public static void main(String[] args)
       {
        Manager man=new Manager();
        for(int i=0;i<100;)
        {
           AbThread t=man.createThread();
           if(t!=null){t.start();i++;}
        }
      }
    }
    class AbThread extends Thread
    {
      AbThread(Manager man){this.man=man;}
       Manager man;
       public void run()
      {
      System.out.print(this);
      System.out.println(""+new Date());
      try
    {
    Thread.sleep(1000);
    }catch(InterruptedException ex)
    {
    ex.printStackTrace();
    }
          man.free();
          man._notify();
       }
    }执行通过.
      

  5.   

    我觉得同时生成100个线程是不可取的,gemouzhi(gemouzhi)说的有道理
      

  6.   

    已经解决, 一开始5个运行,其他全部wait(),一个运行完毕后在RUN()的最后唤醒wait队列中的一个进入运行,现在看来系统吃得消, 而且等待队列中有多少个对系统有影响吗? 只要同时运行的不超过5个,我看就没问题.散分~~~