Java t.join()是阻塞方法调用

时间:2017-07-24 12:08:12

标签: java multithreading thread-safety blocking

当我运行以下代码时。始终首先打印Thread-0,然后并行运行Thread-1和Thread-2。

我想了解thread.join调用是否阻止调用? 还想知道在这种情况下主线程会发生什么。

在文档中没有位置,加入被称为阻止调用。

class TestMultithreadJoin{

    public static void main(String[] args) throws InterruptedException{

        Thread t1 = new Thread(new Runnable(){
            public void run(){
                for(int i = 0; i<=100;i++){
                    System.out.println(" Name :"+Thread.currentThread().getName());
                }
            }

        });

        Thread t2 = new Thread(new Runnable(){
            public void run(){
                for(int i = 0; i<=100;i++){
                    System.out.println(" Name :"+Thread.currentThread().getName());
                }
            }

        });
        t1.start();
        t1.join();
        t2.start();

        Thread t3 = new Thread(new Runnable(){
            public void run(){
                for(int i = 0; i<=100;i++){
                    System.out.println(" Name :"+Thread.currentThread().getName());
                }
            }

        });

        t3.start();     

    }
}

感谢。

1 个答案:

答案 0 :(得分:-1)

join()是一个阻塞调用,每当在线程上调用join时,调用线程将等待该线程完成。这里主线程将等待/阻塞直到t1线程完成。

参见:http://www.journaldev.com/1024/java-thread-join-example