Thread Join()的用法--线程同步性

来源:互联网 发布:手机截取音乐软件 编辑:程序博客网 时间:2024/04/30 06:08

Java Thread类有个 join() 方法,先前一直不知道是怎么用的,直到看到这篇文章。http://auguslee.iteye.com/blog/1292203

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

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    }}

t1启动后,调用join()方法,直到t1的计数任务结束,才轮到t2启动,然后t2也开始计数任务。可以看到,实例中,两个线程就按着严格的顺序来执行了。

如果t2的执行需要依赖于t1中的完整数据的时候,这种方法就可以很好的确保两个线程的同步性。

0 0
原创粉丝点击