join 指的是当前停止当前线程,给调用join方法的线程执行权,并且等待调用join方法的线程执行完毕之后当前线程才继续执行。 相当当前线程调用了wait方法,然后等待另外一个线程调用notify方法唤醒。
public class WaitDemo {
Thread thread1;
Thread thread2;
private void printName() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("完毕" + Thread.currentThread().getName());
}
public void runTest() {
thread1 = new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
printName();
}
});
thread1.start();
thread2 = new Thread(new Runnable() {
public void run() {
System.out.println("1111");
try {
thread1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// TODO Auto-generated method stub
System.out.println("2222");
}
});
thread2.start();
}
}
执行结果:
1111
完毕Thread-0
2222
Thread.join():让另⼀个线程插在⾃⼰前⾯
Thread.yield():暂时让出⾃⼰的时间⽚给同优先级的线程.让出cpu时间,在下一个线程执行时候,此线程有可能被执行,也有可能没有被执行。