在Java中,`join()` 方法用于让当前线程等待另一个线程完成其执行。这是一种同步机制,可以确保线程间的顺序执行。下面是一个简单的 `join()` 方法使用示例:
public class JoinExample {
public static void main(String[] args) {
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("线程1开始执行");
try {
// 模拟线程执行耗时操作
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程1执行完成");
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
try {
// 等待线程1执行完成
thread1.join();
System.out.println("线程1执行完成后,线程2开始执行");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程2执行完成");
}
});
// 启动线程
thread1.start();
thread2.start();
}
}
在这个示例中,我们创建了两个线程 `thread1` 和 `thread2`。`thread2` 在其 `run()` 方法中通过调用 `thread1.join()` 来等待 `thread1` 执行完成。因此,虽然 `thread2` 在 `thread1` 之后启动,但 `thread2` 中的 `"线程1执行完成后,线程2开始执行"` 这条信息会在 `"线程1执行完成"` 之后打印出来,确保了线程的执行顺序。
注意,如果 `thread1` 在 `thread2` 调用 `join()` 之前就已经完成了,那么 `join()` 方法会立即返回,`thread2` 会继续执行,不会造成任何阻塞。