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();
        }
    }
  • 相关阅读:
    Drozer渗透测试工具(使用篇)
    Teamcenter中TCComponentItem与TCComponentBOMLine的创建
    Swing中分割面板JSplitPane的使用
    Swing中菜单栏JToolBar的使用
    Javaweb项目导出成jar包并使用Windows定时任务定时执行
    TCSOA获取BOMLine
    SQLite Expert安装与注册
    获取分类节点
    处理TC的Command问题
    通过TCComponentBomLine获取ItemRevision的两种情况
  • 原文地址:https://www.cnblogs.com/zj0208/p/8081185.html
Copyright © 2011-2022 走看看