您的位置:首页 > 其它

Thread-join 阶段一

2014-01-04 16:04 134 查看
1.Thread.join(),个人理解是一个线程等待另外一个线程结束后再执行

2.java 代码
public class CustomThread1 extends Thread {

public CustomThread1() {
super("CustomThread1");
}

public void run() {
try {
String threadName = Thread.currentThread().getName();
System.out.println(threadName + " start");
for (int i = 0; i < 5; i++) {
System.out.println(threadName + " loop at " + i);
Thread.sleep(1000);
}
System.out.println(threadName + " end");
} catch (Exception e) {
}
}
}

public class CustomThread2 extends Thread {
CustomThread1 t1;

public CustomThread2(CustomThread1 t1) {
super("customThread2");
this.t1 = t1;
}

public void run() {
try {
String threadName = Thread.currentThread().getName();
System.out.println(threadName + " start");
t1.join();
System.out.println(threadName + " end");
} catch (Exception e) {
}
}
}

public class JoinTestDemo {

public static void main(String[] args) {
try {
String threadName = Thread.currentThread().getName();
System.out.println(threadName + " start.");
CustomThread1 t1 = new CustomThread1();
CustomThread2 t2 = new CustomThread2(t1);
t1.start();
Thread.sleep(2000);
t2.start();
System.out.println(threadName + " end!");
} catch (Exception e) {
}
}
}


执行结果:

main start.
CustomThread1 start
CustomThread1 loop at 0
CustomThread1 loop at 1
CustomThread1 loop at 2
main end!
customThread2 start
CustomThread1 loop at 3
CustomThread1 loop at 4
CustomThread1 end 
customThread2 end                                                                                                           
即:主线程启动 --->  线程1(CustomThread1 )启动  --->  线程1睡眠1s 及主线程睡眠2s  --->同时线程2(CustomThread2)启动,执行到t1.join()  时,
要等待线程1(CustomThread1)先执行完
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Thread join