java 多线程 join

t.join()方法只会使主线程进入等待池并等待t线程执行完毕后才会被唤醒。并不影响同一时刻处在运行状态的其他线程。当t执行完后才会执行其他未start的线程,使得线程之间的并行执行变成串行执行。

public class MyTest {

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



        Thread  t1 = new Thread(){
            public void run() {
                for(int i=1;i<=10;i++){

                        System.out.println("AAAAAAAAAAAAAA");

                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Thread t2 = new Thread(){
            public void run() {
                for(int i=1;i<=10;i++){

                        System.out.println("BBBBBBBBBBB");
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };
        };

        Thread t3 = new Thread(){
            public void run() {
                for(int i=1;i<=10;i++){

                    System.out.println("CCCCCCCCCCC");
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };
        };


        t1.start();
        //t2在 t1.join开启前,start,所以 t1和t2是交互执行的
        //代码中把t2设置了 sleep 比较长,所以t1执行完的时候,t2还未执行完成,后面t2与t3交替执行
        t2.start();
        t1.join();
        //t1.join开启的时候,t3线程还未start,所以需要等待t1线程执行完成才能执行
        t3.start();

    }

}

执行结果:
1、t2线程 sleep(10)

BBBBBBBBBBB
AAAAAAAAAAAAAA
BBBBBBBBBBB
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
BBBBBBBBBBB
BBBBBBBBBBB
AAAAAAAAAAAAAA
BBBBBBBBBBB
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
BBBBBBBBBBB
AAAAAAAAAAAAAA
BBBBBBBBBBB
BBBBBBBBBBB
AAAAAAAAAAAAAA
BBBBBBBBBBB
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
BBBBBBBBBBB
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC

t2线程 sleep(100) 

AAAAAAAAAAAAAA
BBBBBBBBBBB
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
AAAAAAAAAAAAAA
BBBBBBBBBBB
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
BBBBBBBBBBB
CCCCCCCCCCC
CCCCCCCCCCC
CCCCCCCCCCC
BBBBBBBBBBB
CCCCCCCCCCC
CCCCCCCCCCC
BBBBBBBBBBB
BBBBBBBBBBB
BBBBBBBBBBB
BBBBBBBBBBB
BBBBBBBBBBB
BBBBBBBBBBB

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值