Java学习-071-多线程04:强制运行线程 join()

在执行开发时,若任务A(主线程)运行到一定程度,满足特定的条件后,必须启动 B任务(示例线程),则可通过线程 join() 方法实现,示例源代码如下所示:

package com.fanfengping.demo;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Demo08RunnableJoin implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 3; i++) {
            log.info("{} 运行,i = {}", Thread.currentThread().getName(), i);
        }
    }

    public static void main(String[] args) {
        Demo08RunnableJoin demo08RunnableJoin = new Demo08RunnableJoin();

        Thread threadJoin = new Thread(demo08RunnableJoin, "强制执行线程");
        threadJoin.start();

        for (int i = 0; i < 5; i++) {
            if (i > 4) {
                try {
                    threadJoin.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

            log.info("Main线程运行中 ---> {}", i);
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

 

控制台输出如下所示:

 

线程 B 强制运行期间,主线程无法运行,必须等待此线程完成之后才可以继续执行。

 

posted @ 2021-05-11 23:32  范丰平  Views(81)  Comments(0Edit  收藏  举报