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

Thread类的join()方法的更多相关文章

  1. 多线程:Thread类的Join()方法

    多线程:Thread类的Join()方法 http://blog.163.com/hc_ranxu/blog/static/3672318220095284513678/ 当我们在线程B中调用Thre ...

  2. C#中Thread类中Join方法的理解(转载)

    指在一线程里面调用另一线程join方法时,表示将本线程阻塞直至另一线程终止时再执行      比如 using System; namespace TestThreadJoin { class Pro ...

  3. Java中Thread类的join方法到底是如何实现等待

    现在的场景是A线程执行:public void run(){ bThread.join(0);//把b线程加入到当前线程(a线程),等待b结束,当前a线程才会结束.}B线程执行public void ...

  4. 【java基础】Thread类之join方法

  5. python语言中threading.Thread类的使用方法

    1. 编程语言里面的任务和线程是很重要的一个功能.在python里面,线程的创建有两种方式,其一使用Thread类创建 # 导入Python标准库中的Thread模块 from threading i ...

  6. python 全栈开发,Day42(Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures)

    昨日内容回顾 线程什么是线程?线程是cpu调度的最小单位进程是资源分配的最小单位 进程和线程是什么关系? 线程是在进程中的 一个执行单位 多进程 本质上开启的这个进程里就有一个线程 多线程 单纯的在当 ...

  7. python全栈开发,Day42(Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures)

    昨日内容回顾 线程 什么是线程? 线程是cpu调度的最小单位 进程是资源分配的最小单位 进程和线程是什么关系? 线程是在进程中的一个执行单位 多进程 本质上开启的这个进程里就有一个线程 多线程 单纯的 ...

  8. 多线程学习笔记(四)---- Thread类的其他方法介绍

    一.wait和 sleep的区别 wait可以指定时间也可以不指定时间,而sleep必须指定时间: 在同步中时,对cpu的执行权和锁的处理不同: wait:释放执行权,释放锁:释放锁是为了别人noti ...

  9. Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别? 线程的sleep()方法和yield()方法有什么区别?

    Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别? sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间 ...

随机推荐

  1. linux重新设置密码,亲试成功

    1:进入/etc/my.cnf 在[mysqld]下添加一行skip-grant-tables 2:保存配置文件后,输入whereis systemctl(提示redirecting to 某个目录下 ...

  2. pytorch写一个LeNet网络

    我们先介绍下pytorch中的cnn网络 学过深度卷积网络的应该都非常熟悉这张demo图(LeNet): 先不管怎么训练,我们必须先构建出一个CNN网络,很快我们写了一段关于这个LeNet的代码,并进 ...

  3. JS_高程7.函数表达式(1)

    定义函数的两种常见的方法: 1 . 函数声明 2. 函数表达式 # 差异 (1)函数声明 ,具有函数声明提升的特征. (2)函数声明的函数的name属性为函数的名称:使用函数表达式定义的函数在ES5中 ...

  4. angular学习笔记(5)- 路由

    angular1学习笔记(5)- 路由 需要前端路由的原因: 1.ajax请求不会留下History记录 2.用户无法通过URL进入应用中的指定页面(保存书签.链接分享给朋友) 3.ajax对SEO是 ...

  5. mysql技巧:如果记录存在则更新/如果不存在则插入的三种处理方法

    先建一个表,便于后面讨论: CREATE TABLE `t_emp` ( `f_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', `f_em ...

  6. 如何在 PhpStorm 使用 Code Generation?

    實務上開發專案時,有一些程式碼會不斷的出現,這時可靠 PhpStorm 的 Code Generation 幫我們產生這些 code snippet,除此之外,我們也可以將自己的 code snipp ...

  7. grid - 网格轨道对齐方式

    网格轨道对齐可以相对于网格容器行和列轴. align-content指定网格轨道沿着行轴对齐方式:justify-content指定网格轨道沿着列轴对齐方式.它们支持下面属性: normal star ...

  8. kafka注册异常

    问题描述: kafka注册异常,提示brokers id已经被注册过 -- ::,] FATAL [Kafka Server ], Fatal error during KafkaServer sta ...

  9. MySQL导出TSV格式文件

    可以使用mysqldump, 也可以使用mysql -e 使用mysqldump 因为要使用到 -T / --tab 参数, 需要先查看mysql设置的secure_file_priv mysql&g ...

  10. [db]mysql全量迁移db

    机房要裁撤, 原有的老业务机的mysql需要迁移到新的. 方案1: 全量打包拷贝data目录, 发现拷过去各种毛病 方案2: mysqldump逻辑导出解决问题 新的db刚安装好. 步骤记录下. # ...