📜  Java多线程join()方法(1)

📅  最后修改于: 2023-12-03 14:43:00.346000             🧑  作者: Mango

Java多线程join()方法

在Java多线程编程中,join()是一个非常重要的方法。本文将介绍该方法的基本概念,以及如何使用它来实现多线程编程。

什么是join()方法?

简单来说,join()方法是用来等待一个线程执行完成的方法。调用join()方法的线程将会等待被调用的线程执行完毕后再继续执行。也就是说,join()方法会将调用它的线程挂起,直到被调用的线程执行完毕。

join()方法的使用
public class JoinDemo {
    public static void main(String[] args) {
        // 创建两个线程,并启动
        Thread thread1 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("Thread1 start...");
                try {
                    Thread.sleep(3000);// 线程1睡眠3秒
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Thread1 end.");
            }
        });

        Thread thread2 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("Thread2 start...");
                try {
                    Thread.sleep(2000);// 线程2睡眠2秒
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Thread2 end.");
            }
        });
        thread1.start();
        thread2.start();
        try {
            thread1.join();// 等待线程1执行完成
            thread2.join();// 等待线程2执行完成
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("All thread done.");

    }
}

运行上面的代码,输出如下:

Thread1 start...
Thread2 start...
Thread2 end.
Thread1 end.
All thread done.

从输出结果可以看出,等待被调用的线程先执行完毕,然后才执行调用join()方法的线程。

join()方法的应用场景

1、线程的执行顺序

假设需要让多个线程按照固定的顺序依次执行,可以使用join()方法。例如:在主线程中创建线程1,2,3,需要让线程2在线程1执行完毕后再执行,线程3在线程2执行完毕后再执行,可以使用join()方法。

2、等待线程执行完成

使用join()方法可以实现等待一个线程执行完成后再执行另一个线程的操作。

3、线程间的数据交换

可以使用join()方法,将线程执行结果返回到主线程中。例如:在线程1中完成一个耗时操作,将结果返回给主线程,在主线程中根据结果做出相应的操作。

4、线程的中断

可以使用线程的interrupt()方法中断线程的执行,但是如果线程进入了阻塞状态,那么interrupt()方法是无法中断线程的执行的。此时可以使用join()方法,将线程挂起,然后调用interrupt()方法中断线程的执行。

总结

本文介绍了Java多线程编程中join()方法的基本用法和应用场景,需要注意的是,join()方法始终是阻塞当前线程的执行,直到被调用的线程执行完成后才会返回。