首页 > 编程笔记 > Java笔记 阅读:26

Java join()函数的用法(附带实例)

Java 的 Thread 类提供了 join() 函数,当某个线程执行中调用其他线程的 join() 函数时,该线程将被阻塞,直到 join() 方法所调用的线程结束,这种情况称为线程插队。

接下来,通过案例来演示线程插队:
public class Demo {
    public static void main(String[] args) throws Exception {
        // 创建MyThread实例
        System.out.println("吃饭时吃菜的顺序:");
        MyThread myThread1 = new MyThread("酱焖茼蒿");
        myThread1.start(); // 开启线程
        for (int i = 1; i < 6; i++) {
            if (i == 3) {
                try {
                    System.out.println("酱焖茼蒿要开始插队了");
                    myThread1.join(); // 线程插入
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            System.out.println("水煮肉片" + i);
        }
    }
}

class MyThread extends Thread {
    private String socialStatus;
    private int tickets = 10;

    public MyThread(String socialStatus) {
        this.socialStatus = socialStatus;
    }

    @Override
    public void run() {
        for (int i = 1; i < 6; i++) {
            System.out.println(socialStatus + i);
        }
    }
}
程序的运行结果如下:

吃饭时吃菜的顺序:
水煮肉片1
水煮肉片2
酱焖茼蒿要开始插队了
酱焖茼蒿1
酱焖茼蒿2
酱焖茼蒿3
酱焖茼蒿4
酱焖茼蒿5
水煮肉片3
水煮肉片4
水煮肉片5

程序中声明了 MyThread 类,继承 Thread 类并实现了 run() 函数,方法内循环打印“酱焖茼蒿”。

Demo 类在 main() 函数中创建 MyThread 类实例并启动线程,main() 函数中也循环打印吃菜的顺序,当变量 i 的值为 3 时,调用 join() 方法插入子线程,然后子线程开始执行,直到子线程执行完,main() 函数的主线程才能继续执行。

相关文章