java多线程编程之join方法的使用示例


在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` 会继续执行,不会造成任何阻塞。