1. 方法join()的作用是等待线程对象销毁。方法join()的作用是使所属的线程对象x正常执行run()方法中的任务,而使当前线程zz进行无限期的阻塞,等待线程x销毁后再继续执行线程z后面的代码。
如
public class MyThread extends Thread{
public void run(){
int secondValue = (int) (Math.random()*1000);
System.out.println(secondValue);
try {
Thread.sleep(secondValue);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class Run {
public static void main(String[] a){
MyThread threadtest = new MyThread();
threadtest.start();
try {
threadtest.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("理论上threadtest对象执行完毕之后再输出~~");
}
}
2.join(long)方法与sleep(long)方法
方法join(long)的功能在内部是使用wait(long)方法来实现的,所以join(long)方法具有释放锁的特点。但是sleep(long)不释放锁。
3.join方法与异常
方法join()与interrupt()方法如果彼此相遇,则会出现异常。