zoukankan      html  css  js  c++  java
  • Thread类的join()方法

    public class Demo {
    
        /**
         * Thread类的join()方法
         * --------------------------------
         * 1)join()
         * 2)join(long millis)
         * 3)join(long millis, int nanos)
         * 用法见代码中注释,可通过调整睡眠时间一一验证。
         */
        public static void main(String[] args) {
    
            // 创建一个线程组
            ThreadGroup threadGroup = new ThreadGroup("ThreadGroup1");
    
            // 在该线程组下创建一个线程t1
            Thread t1 = new Thread(threadGroup, new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(3000); // 3秒后执行
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("Thread1 end ...");
                }
            }, "Thread1");
    
            // 在该线程组下创建一个线程t2
            Thread t2 = new Thread(threadGroup, new Runnable() {
                @Override
                public void run() {
                    try {
                        /*
                         * t1.join();
                         * ----------------------------
                         * 等同于 t1.join(0); t1执行结束后执行t2.
                         */
                        t1.join();
    
                        /*
                         * t1.join(1000);
                         * ----------------------------
                         * 等最多1s直至t1死亡。
                         *     |- 如果1s内t1没死,t1执行1s后开始执行t2;
                         *     |- 如果1s内t1死了,不用等满1s直接开始执行t2;
                         */
                        // t1.join(1000);
    
                        /*
                         * t1.join(1000, 1000);
                         * -----------------------------------------
                         * 类似t1.join(1000);
                         *     第一个1000,单位是毫秒,第二个1000单位是纳秒 .
                         *     |- 如果第一个参数不是1000,而是0,效果等同 t1.join(0 + 1);
                         *     |- 如果第二个参数大于50万,效果等同 t1.join(1000 + 1);
                         *     |- 如果第一个参数不为0,第二个参数小于50万,效果等同 t1.join(1000);
                         *  有点延时执行的意思。但是延时的时间只能是0毫秒或1毫秒。
                         */
                        // t1.join(1000, 1000);
    
                        Thread.sleep(1000); // 1s后执行
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("Thread2 end ...");
                }
            }, "Thread2");
    
            // 启动线程
            t1.start();
            t2.start();
        }
    }
  • 相关阅读:
    C# 保存文件到数据库
    4.Linq To Xml操作XML增删改查
    服务器端包含 SSI简介
    htm、html、shtml网页区别
    localStorage使用总结
    jquery.cookie.js——jquery的cookie插件
    javascript:;与javascript:void(0)使用介绍
    JS中函数void()
    gitlab使用 —— 多人协同工作(重要技能)
    cookie、localstroage与sessionstroage的一些优缺点
  • 原文地址:https://www.cnblogs.com/zj0208/p/8081185.html
Copyright © 2011-2022 走看看