欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-01 12:53:44
...

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

线程强制加入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
     */
}