/**
*
* @author emmet1988.iteye.com
*
* Thread提供了让一个线程等待另一个线程执行完成的方法:join方法。
* 当某个线程的执行流中调用了其他线程的join方法时,则调用线程将
* 被阻塞,直到被join方法加入的join线程完成为止。
*
* join方法有三种重载的形式:
* 1.join(); 等待被join的线程执行完成。
* 2.join(long millis); 等待被join的线程的时间最长为millis毫秒。
* 2.join(long millis,int nanos); 等待被join的线程的最长时间为millis毫秒 加上nanos毫秒(千分之一毫秒)。
*/
public class JoinThread extends Thread {
public JoinThread(String name){
super(name);
}
@Override
public void run() {
// super.run();
for (int i = 0; i < 10; i++) {
System.out.println("子线程:"+getName()+" "+i);
}
}
public static void main(String[] args) throws InterruptedException {
new JoinThread("新线程").start();
for (int i = 0; i < 10; i++) {
if (i==2 ) {
JoinThread jt = new JoinThread("被Join的线程");
jt.start();
// 在main线程的执行流中(即本方法)调用了jt线程的Join方法,
// 则main线程必须执行结束才会向下继续执行。
jt.join();
}
System.out.println("主线程:"+Thread.currentThread().getName()+" "+i);
}
}
}
*
* @author emmet1988.iteye.com
*
* Thread提供了让一个线程等待另一个线程执行完成的方法:join方法。
* 当某个线程的执行流中调用了其他线程的join方法时,则调用线程将
* 被阻塞,直到被join方法加入的join线程完成为止。
*
* join方法有三种重载的形式:
* 1.join(); 等待被join的线程执行完成。
* 2.join(long millis); 等待被join的线程的时间最长为millis毫秒。
* 2.join(long millis,int nanos); 等待被join的线程的最长时间为millis毫秒 加上nanos毫秒(千分之一毫秒)。
*/
public class JoinThread extends Thread {
public JoinThread(String name){
super(name);
}
@Override
public void run() {
// super.run();
for (int i = 0; i < 10; i++) {
System.out.println("子线程:"+getName()+" "+i);
}
}
public static void main(String[] args) throws InterruptedException {
new JoinThread("新线程").start();
for (int i = 0; i < 10; i++) {
if (i==2 ) {
JoinThread jt = new JoinThread("被Join的线程");
jt.start();
// 在main线程的执行流中(即本方法)调用了jt线程的Join方法,
// 则main线程必须执行结束才会向下继续执行。
jt.join();
}
System.out.println("主线程:"+Thread.currentThread().getName()+" "+i);
}
}
}