您的位置:首页 > 编程语言 > Java开发

Java多线程[2]:join() 方法

2015-09-30 14:53 369 查看

join()方法的使用场景

假设我们在主线程中创建了一个线程,这个线程要执行很长时间,我希望这个线程执行完并结束以后,主线程再结束,也就是说,我希望主线程能够晚于子线程结束。因为我们不知道子线程要执行多久,所以,也不知道主线程要等待多久,所以,join()方法诞生了。

示例代码

首先,创建一个NewThread类,实现Runnable接口

public class NewThread implements Runnable {

Thread t;
public NewThread() {
t = new Thread(this, "my test thread");
t.start();
System.out.println("线程已启动");
}

@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("child thread:"+i);
}
System.out.println("child thread exist");
}
}


然后,在main方法中实例化一个NewThread对象

public class Program {

public static void main(String[] args) {
NewThread obj= new NewThread();//NewThread类实例化后,会自动启动线程

for (int i = 0; i < 5; i++) {
System.out.println("main thread:"+i);
}
try {
obj.t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Main thread exist");
}
}


运行结果

运行结果如下(可能每次运行都不一样)

线程已启动
child thread:0
main thread:0
main thread:1
main thread:2
main thread:3
main thread:4
child thread:1
child thread:2
child thread:3
child thread:4
child thread exist
Main thread exist


尽管多个线程之间是以不可知的速度向前执行的,但是,我们使用了join() 方法后,主线程总是晚于子线程结束。

join()方法的工作原理

在主线程中调用了子线程的 join()方法,主线程会一直等待,直到子线程执行完毕并加入其中,主线程再继续执行。这是join()方法的工作原理,也是该方法被命名为join的原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程 Thread join