作用:

  join()方法的作用就是让主线程等待子线程执行结束之后再运行主线程。


public class Father{


        public static void main(String[] args){

                try {

                        // 新建“线程t1”

                        Son t1 = new Son("t1");


                        // 启动“线程t1”

                        t1.start();

                        // 将“线程t1”加入到“主线程main”中,并且“主线程main()会等待它的完成”

                        t1.join();

                        System.out.println(Thread.currentThread().getName()+"---finish");

                } catch (InterruptedException e) {

                        e.printStackTrace();

                }

        }


        static class Son extends Thread{


                public Son(String name){

                        super(name);

                }

                @Override

                public void run(){

                        System.out.println(Thread.currentThread().getName()+"---start");


                        for(int i=0; i <10000; i++){

                                // 延时操作

                        };

                        System.out.println(Thread.currentThread().getName()+"---finish");

                }

        }

}

最终执行的结果:


t1---start

t1---finish

main---finish

从上面代码中可以看出,在Father类中通过new来创建了一个Son对象,子线程调用了join()方法之后,主线程被阻塞,等待子线程执行结束之后,主线程继续执行。