我在一个主线程中开启10个子线程,开启后主线程wait,等等待所有子线程运行结束,主线程继续运行。请问如何用wait notify;wait部分怎么写才能达到来10个notify才继续主线程。或都谁有更好的方法实现这个机制也感谢你们写下来,谢谢啦。

解决方案 »

  1.   

    你可以用join来等待
    子线程1.join();
    子线程2.join();
    .
    .
    .
      

  2.   


    while(rs.next()){

    new mythread(gb2iso(rs.getString("ip")),this.cmd);
        i++;

    }

    synchronized(obj1)
    {
    flag=true;

    try { if(i!=0)
    这里写wait(),不知道怎么写,线程对像得起来也比较麻烦啊
    } catch (InterruptedException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
    }
    }

    }
      

  3.   

    你那jion,子线程要不要写函数,另外:
    子线程1.join();
    子线程2.join();如果子线程2先于一结束,对主线程有没有影响?
      

  4.   

    可以参考“生产者/消费者”的代码,参见
    http://blog.csdn.net/congliu/archive/2005/07/18/428251.aspx
      

  5.   

    先开所有的线程,保证他们并发执行
    thread1.start();
    thread2.start();
    ...
    ...
    thread10.start();
    在等所有的结束后,执行下面的程序
    thread1.join();
    ...
    ...
    thread10.join();之后可以写你接下来要执行的代码了