join

如果一个线程A执行了thread.join()语句,其含义是:当前线程A等待thread线程终止之后才从thread.join()返回。线程Thread除了提供join()方法之外,还提供了join(long millis)和join(long millis, int nanos)两个具备超时特性的方法。这两个超时方法表示,如果线程thread在给定的超时时间里没有终止,那么将会从该超时方法中返回。

@Slf4j
public class Hello {
    @Slf4j
    public static class HelloThread extends Thread {
        @SneakyThrows
        @Override
        public void run() {
            log.info("hello start");
            Thread.sleep(2000);
            log.info("hello end");
        }
    }
    public static void main(String[] args) throws InterruptedException {
        log.info("main start");
        Thread thread = new HelloThread();
        thread.start();
        thread.join();//HelloThread没执行完,main线程可能就执行完了, Thread有一个join方法,可以让调用join的线程等待该线程结束
        log.info("main end");
    }
}

 

 

参考: Java并发编程的艺术 4.3.5 Thread.join()的使用

  Java编程的逻辑 15.1 线程的基本概念

 

posted @ 2022-01-21 16:36  草木物语  阅读(250)  评论(0)    收藏  举报