线程里面有一个join方法,意思是等待该线程的消亡,即等待该线程被执行完。它还有带参数的重载方法,参数是等待的最长时间。一个线程自己对自己调用这个方法显然没什么意思,就表示自己再等一定的时间消亡,这没什么实际意义。一般是对另外一个线程调用这个方法,表示等待一段时间或直到另外一个线程执行完毕这个线程才继续往下执行。这说明了什么,很显然是在调整线程间的执行顺序,这也是join方法的一个重要的使用场景。join方法的调用也分为两种情况,一种是普通调用,一种是获得监视器锁的时候调用。同样,在获得监视器锁的时候调用,这个方法会一直占有锁,直到方法执行完毕后,锁才会被释放掉,所以这种情况下要慎用。
下面是普通调用的示例代码:
final Thread t1 = new Thread(new Runnable(){
public void run() {
try {
System.out.println("线程1 -> " + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())));
Thread.sleep(5000);
System.out.println("线程1 <- " + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())));
} catch (InterruptedException e) {
e.printStackTrace();
}
}});
Thread t2 = new Thread(new Runnable(){
public