黑马程序员技术交流社区
标题:
关于join方法
[打印本页]
作者:
卜弦
时间:
2013-10-12 21:30
标题:
关于join方法
毕老师视频里说当A线程执行到了B线程的join()方法时,A就会等待。等B线程都执行完,A才会执行。
视频中例子里面的程序是这样的:
t1.start();
t2.start();
t1.join();
老师说这种情况是主线程开启t1、t2后碰到了join,所以主线程释放执行权。另外两个线程运行。
请问,能不能是线程t2释放执行权给主线程和t1?
作者:
Jam-l
时间:
2013-10-12 21:52
你用join()方法意思就是让运行到这个方法的线程停止,让调用这个方法的线程执行完,本线程才能继续执行。如果你要让t2释放执行权给主线程和t1,那意思就是让t2线程运行到t1调用的join方法,所以你可以把t1传入给t2线程,在t2线程中调用t1的join()方法就可以了
代码实现:
public class Test2 {
public static void main(String[] args) throws InterruptedException {
T1 t1 = new T1();
T2 t2 = new T2(t1);
t1.start();
t2.start();
for(int x=0;x<100;x++){
System.out.println("main---"+x);
}
}
}
class T1 extends Thread{
@Override
public void run() {
for(int x=0;x<100;x++){
System.out.println("t1---"+x);
}
}
}
class T2 extends Thread{
private T1 t1;
public T2(T1 t1){
this.t1 = t1;
}
@Override
public void run() {
try {
t1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int x=0;x<100;x++){
System.out.println("t2---"+x);
}
}
}
复制代码
作者:
To
时间:
2013-10-13 13:53
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
作者:
To
时间:
2013-10-14 09:25
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
作者:
卜弦
时间:
2013-10-14 18:32
Jam-l 发表于 2013-10-12 21:52
你用join()方法意思就是让运行到这个方法的线程停止,让调用这个方法的线程执行完,本线程才能继续执行。如 ...
是呢!!厉害呀~赞一个!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2