在学习Java多线程的时候,有时候需要线程等待子线,这里给出了8种实现方式,当然不局限于这8种方式。另外,很多人在测试的时候,选择让线程休眠一定的时间而实现线程等待,但是这种方式控制不是特别好,建议使用下面这些方法。
1、主线程调用join
public class Main1 {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("子线程执行完成");
});
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("主线程执行完成");
}
}
2、主线程、子线程调用join
public class Main2 {
public static void main(String[] args) {
final Thread thread1 = new Thread(() -> {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("子线程1执行完成");
});
thread1.start();
final Thread thread2 = new Thread(() -> {
try {
thread1.join();
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("子线程2执行完成");
});
thread2.start();
try {
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("主线程执行完成");
}
}
3、wait
public class Main3 {
public static void main(String[] args) {
Object obj = new Objec