我在main函数中创建了4个线程, Test r = new test(); Thread t = new Thread(r); for(int n = 0;n<4;n++){ t.start(); } 这4个线程都对一个类里的数组做存取操作, 现在要等所有我创建的线程跑完后才能输出这个数组,请问这个输出该怎么写? 因为不能确定这些线程什么时候跑完,我写在main函数里跑多个线程没出来结果,单个线程就能出来结果。
首先你代码我个人感觉就是错的: 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();
Test r = new test(); Thread t; for(int n = 0;n <4;n++){ t=new Thread(r) t.start(); }
答:例子代码,供你参考: 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!");
是不是输出这个方法也要写在另一个实施了Runnable接口的类里,
然后在我的4个线程后,再跑输出的这个线程?
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();
Thread t;
for(int n = 0;n <4;n++){
t=new Thread(r)
t.start();
}
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!");
正在想怎么捕获到循环的最后一个线程,原来可以用数组,再用join
这个方法太妙了,给分!!!!
首先,你不是起了四个线程,而是一个线程起了四次。
其次,这个可以通过某个标志线程执行状况的变量来实现。