欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java Thread join() 的用法

程序员文章站 2022-07-12 19:29:56
...

        Java Thread中, join() 方法主要是让调用该方法的thread完成run方法里面的东西后,再执行join()方法后面的代码。示例:

package com.bijian.study;

class ThreadTesterA implements Runnable {

    private int counter;

    @Override
    public void run() {
        while (counter <= 10) {
            System.out.print("Counter = " + counter + " ");
            counter++;
        }
        System.out.println();
    }
}

class ThreadTesterB implements Runnable {

    private int i;

    @Override
    public void run() {
        while (i <= 10) {
            System.out.print("i = " + i + " ");
            i++;
        }
        System.out.println();
    }
}

public class ThreadTester {
    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(new ThreadTesterA());
        Thread t2 = new Thread(new ThreadTesterB());
        t1.start();
        t1.join(); // wait t1 to be finished
        t2.start();
        t2.join(); // in this program, this may be removed
    }
}

运行结果:

Counter = 0 Counter = 1 Counter = 2 Counter = 3 Counter = 4 Counter = 5 Counter = 6 Counter = 7 Counter = 8 Counter = 9 Counter = 10 
i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 i = 10

        如果去掉t1.join()这个语句过后, 输出的书序是乱的, 如下所示:

Counter = 0 Counter = 1 i = 0 Counter = 2 i = 1 Counter = 3 i = 2 Counter = 4 i = 3 Counter = 5 i = 4 Counter = 6 i = 5 Counter = 7 i = 6 Counter = 8 i = 7 Counter = 9 i = 8 Counter = 10 i = 9 
i = 10 

        加上这个语句过后, 就会按照顺序输出,从某种意义上说实现了同步。

相关标签: Java join