我在main函数中创建了4个线程,
   Test r = new test();
   Thread t = new Thread(r);
   for(int n = 0;n<4;n++){
t.start();
}  这4个线程都对一个类里的数组做存取操作,
  现在要等所有我创建的线程跑完后才能输出这个数组,请问这个输出该怎么写?
  因为不能确定这些线程什么时候跑完,我写在main函数里跑多个线程没出来结果,单个线程就能出来结果。
  
  能有简单的例子代码吗?  谢谢!

解决方案 »

  1.   


      是不是输出这个方法也要写在另一个实施了Runnable接口的类里,
      然后在我的4个线程后,再跑输出的这个线程?
      

  2.   

    首先你代码我个人感觉就是错的:
    Test r = new test(); 
       Thread t1 = new Thread(r); 
    Thread t2 = new Thread(r); 
    Thread t3 = new Thread(r); 
    Thread t4 = new Thread(r); 
    t1.start();
    t2.start();t3.start();t4.start();
      

  3.   

    Test r = new test();
    Thread t;
    for(int n = 0;n <4;n++){
       t=new Thread(r)
       t.start();
      

  4.   

    答:例子代码,供你参考: Test r = new Test(); 
     Thread[] t = new Thread[4];    
     for(int n = 0;n <4;n++){ 
        t[n]= new Thread(r);//创建四个线程
         t[n].start(); //启动这四个线程
       } //for(n) for(int i=0;i<4;i++)
     {
      try {
         t[i].join();//等待这四个线程都执行结束
       } catch (InterruptedException e) { }
     }//for(i) //当上边这四个线程都执行结束后,才能执行下一条println()语句。
     System.out.println("END!");
       
      

  5.   


      正在想怎么捕获到循环的最后一个线程,原来可以用数组,再用join
      这个方法太妙了,给分!!!!
      

  6.   

    引用 3 楼 cyberpeng 的回复:
    首先,你不是起了四个线程,而是一个线程起了四次。
    其次,这个可以通过某个标志线程执行状况的变量来实现。