美文网首页程序员
Thread Join使用

Thread Join使用

作者: Randolph555 | 来源:发表于2019-03-12 16:07 被阅读0次

    Thread Join在我们实际业务场景中使用的场景可能不是很多,java.util.concurrent包下面已经提供很多种方式来帮我们解决线程同步问题,这里可以作为简单的使用和了解。

    
    /**
     * Join:  Waits for this thread to die.    等待线程死亡!
     * 底层通过jdk  synchronized  wait notify 实现
     * 使用场景 地铁站过安检时,需把背包放入检查台流水线,行人才能进入站内,背包和人同时移动,但是行人速度较快,需要在另一端等到背包安检完成。
     */
    public class JoinTest {
    
        public static final Logger logger = LoggerFactory.getLogger(JoinTest.class);
    
        public static void main(String[] args) throws InterruptedException {
    
            //准备2个线程
            Thread thread1 = getThread();
            Thread thread2 = getThread();
    
            //启动1第一个线程
            thread1.start();
            //第一个线程执行完成才能执行后面任务
            thread1.join();
    
            thread2.start();
            thread2.join();
    
            logger.info(Thread.currentThread().getName() + "等待thread1和thread2执行结束,在执行后续操作!");
        }
    
        private static Thread getThread() {
            return new Thread(() -> {
                try {
                    logger.info(Thread.currentThread().getName() + "开始任务=======================");
                    //模拟1秒钟任务
                    Thread.sleep(1000L);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                logger.info(Thread.currentThread().getName() + "任务执行完成之后,下面才能执行,不然一直被阻塞");
            });
        }
    }
    
    

    日志输出:

    16:05:55.508 [Thread-0] INFO com.test.tenant.JoinTest - Thread-0开始任务=======================
    16:05:56.515 [Thread-0] INFO com.test.tenant.JoinTest - Thread-0任务执行完成之后,下面才能执行,不然一直被阻塞
    16:05:56.515 [Thread-1] INFO com.test.tenant.JoinTest - Thread-1开始任务=======================
    16:05:57.519 [Thread-1] INFO com.test.tenant.JoinTest - Thread-1任务执行完成之后,下面才能执行,不然一直被阻塞
    16:05:57.520 [main] INFO com.test.tenant.JoinTest - main等待thread1和thread2执行结束,在执行后续操作!
    
    Process finished with exit code 0
    
    

    相关文章

      网友评论

        本文标题:Thread Join使用

        本文链接:https://www.haomeiwen.com/subject/hejnpqtx.html