博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Thread类的join()方法
阅读量:7011 次
发布时间:2019-06-28

本文共 2264 字,大约阅读时间需要 7 分钟。

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();    }}

 

转载地址:http://dxttl.baihongyu.com/

你可能感兴趣的文章
pku 2186 Popular Cows (tarjan缩点)
查看>>
c关键字控制语句运算符小结
查看>>
初学Oracle的笔记(1)——基础内容(实时更新中..)
查看>>
(转)Ogre 安装 配置 问题
查看>>
【转】清理浮动的全家
查看>>
ZJOI2006 物流运输trans
查看>>
WinForm编程数据视图之DataGridView浅析(续)
查看>>
vim中实现括号和引号自动补全
查看>>
linux下的块设备驱动(一)
查看>>
Git-Flow
查看>>
mysql 5.7 安装手册(for linux)
查看>>
7.1-7.31推荐文章汇总
查看>>
ubuntu16.4中安装samba服务
查看>>
IT Operations(IT 运营),运维的更价值化认识
查看>>
eclipse启动时虚拟机初始内存配置
查看>>
在Linux用户空间做内核空间做的事情
查看>>
Chapter 1 First Sight——29
查看>>
SSH的jar包下载地址
查看>>
Solve VS2010 Error "Exceptions has been thrown by the target of an invocation"
查看>>
点击发送短信剩余秒数
查看>>