可以使用notify和wait(需要计数),但是某些场合下,会发生不能notify的情况,结果导致死锁,最后还是采用了你现在的方法,但就是不能很好的同步。或是可以采用线程去减计数(调用一个减计数器的方法,但该方法需要同步),当计数为0,则notify,我想就没有问题了。当时,我的需要没有要求同步,所以自己就没再试了,你可以试一试。我觉得wati/notify可以很好的解决这个问题。

解决方案 »

  1.   

    你可以让一个线程A独立于这组线程(100个)运行!并让这个线程等待!
    在这组线程结束时,点用A的nodify()方法,A运行,计数器加一,如果
    值小于100,继续等待。当这组线程全部执行完毕,计数器值为100,
    A线程就可以执行其他操作了
    class A implements Runnable
    {
      public void run()
     {
       while(index<100)
      {
         ....
            wait();
         .....
         index++;
      }
      // Do Any Thing
     }
    }
      

  2.   

    join需要一个一个等待吧,和单线程比有什么优势吗?
      

  3.   

    不一定是一个一个等待,只是start方法在join方法之后的才等待前面线程的结束
    例如:
    test1.start()
    test2.start()
    test1.join()
    test3.start()
    test3等待
    test2不等待
      

  4.   

    各位大哥,join()方法到底是干什么用的,有什么功能