在执行开发时,若任务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 强制运行期间,主线程无法运行,必须等待此线程完成之后才可以继续执行。