0
点赞
收藏
分享

微信扫一扫

线程强制加入、线程强制加入应用场景

程序猿不脱发2 2022-02-15 阅读 73

线程强制加入、线程强制加入应用场景

线程强制加入join

  • join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞
  • 线程的插队方式
  • 主线程的代码块中,如果碰到了join方法,此时主线程会阻塞,等待子线程结束之后,再继续执行join之后的代码块

代码

package testthread;

public class TestJoin {

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

        //启动线程
        Thread t = new Thread("vip") {
            @Override
            public void run() {
                int countDown = 10;
                while (true) {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    countDown--;
                    System.out.println(Thread.currentThread().getName() + System.currentTimeMillis());
                    if (countDown <= 0) {
                        break;
                    }
                }
            }
        };

        //t来了,但还不用join,此时,是主线程和t线程交替执行
        t.start();

        //主线程
        for (int i = 0; i < 20; i++) {
            if (i == 10) {
                t.join();//执行join则不在交替执行,主线程阻塞,只执行t线程,执行完之后在执行主线程
            }
            System.out.println("main" + System.currentTimeMillis());
        }
    }
    
    /*
    输出:
    main1644572688188
    main1644572688188
    main1644572688188
    main1644572688188
    main1644572688188
    main1644572688188
    main1644572688188
    main1644572688188
    main1644572688188
    main1644572688188
    vip1644572689190
    vip1644572690191
    vip1644572691206
    vip1644572692217
    vip1644572693224
    vip1644572694239
    vip1644572695250
    vip1644572696264
    vip1644572697264
    vip1644572698277
    main1644572698278
    main1644572698278
    main1644572698278
    main1644572698278
    main1644572698278
    main1644572698278
    main1644572698278
    main1644572698278
    main1644572698278
    main1644572698278
     */
}
举报

相关推荐

0 条评论