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)先执行完
本文深入探讨了Java多线程编程中的join()方法,通过具体代码实例展示了如何让一个线程等待另一个线程执行完毕后再继续运行。详细解析了线程之间的同步和依赖关系,提供了在实际开发中解决多线程并发问题的思路。
1511

被折叠的 条评论
为什么被折叠?



