java多线程总结三:sleep()、join()、interrupt()示例

时间:2023-01-23 10:37:24

这是一个来自《java编程思想上的示例》

  1. package demo.thread;
  2. /**
  3. *sleep()是静态方法,是属于类的,作用是让当前线程阻塞
  4. *join()是使线程同步,如在某个线程里调用t.join()表示t线程执行完再执行当前线程
  5. *interrupt()给线程设定一个标志表示该线程已被中断,但在异常捕获时将清理这个标志
  6. *所以在catch子句中,该标志为false
  7. */
  8. public class SleepJoinDemo {
  9. public static void main(String[] args) {
  10. Sleeper sleep1 = new Sleeper("sleep1", 1500);
  11. Sleeper sleep2 = new Sleeper("sleep2", 1500);
  12. Joiner join1 = new Joiner("join1", sleep1);
  13. Joiner join2 = new Joiner("join2", sleep1);
  14. sleep2.interrupt();
  15. }
  16. }
  17. class Sleeper extends Thread {
  18. // 可以传参设定睡眠时间
  19. private int sleepTime;
  20. public Sleeper(String name, int sleepTime) {
  21. super(name);
  22. this.sleepTime = sleepTime;
  23. start();// 在构造方法中启动
  24. }
  25. @Override
  26. public void run() {
  27. try {
  28. sleep(sleepTime);
  29. } catch (InterruptedException e) {
  30. System.out.println(getName() + " was interrupted.\n"
  31. + "isInterrupted():" + isInterrupted());
  32. return;
  33. }
  34. System.out.println(getName() + " has awakened");
  35. }
  36. }
  37. class Joiner extends Thread {
  38. private Sleeper sleeper;
  39. public Joiner(String name, Sleeper sleeper) {
  40. super(name);
  41. this.sleeper = sleeper;
  42. start();
  43. }
  44. public void run() {
  45. try {
  46. sleeper.join();//合并,异步变同步
  47. } catch (InterruptedException e) {
  48. System.out.println("interrupted");
  49. }
  50. System.out.println(getName() + " join completed");
  51. }
  52. }

java多线程总结三:sleep()、join()、interrupt()示例的更多相关文章

  1. Java 多线程基础(十)interrupt()和线程终止方式

    Java 多线程基础(十)interrupt()和线程终止方式 一.interrupt() 介绍 interrupt() 定义在 Thread 类中,作用是中断本线程. 本线程中断自己是被允许的:其它 ...

  2. Java多线程的三种实现方式

    java多线程的三种实现方式 一.继承Thread类 二.实现Runnable接口 三.使用ExecutorService, Callable, Future 无论是通过继承Thread类还是实现Ru ...

  3. Java多线程(三)如何创建线程

    点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...

  4. “全栈2019”Java多线程第三十七章:如何让等待的线程无法被中断

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  5. “全栈2019”Java多线程第三十六章:如何设置线程的等待截止时间

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 下一章 "全栈2019"J ...

  6. “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  7. “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  8. “全栈2019”Java多线程第三十三章:await与signal/signalAll

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  9. “全栈2019”Java多线程第三十二章:显式锁Lock等待唤醒机制详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  10. “全栈2019”Java多线程第三十一章:中断正在等待显式锁的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. 使用 Entity Framework Core 时,通过代码自动 Migration

    一 介绍 在使用 Entity Framework Core (下面就叫 EF Core 吧)进行开发时,如果模型有变动,我们要在用 EF Core 提供的命令行工具进行手工迁移,然后再运行程序.但是 ...

  2. Java 用自带dom解析器遍历叶子节点内容

    一.XML文件config.xml,内容如下: <?xml version="1.0" encoding="UTF-8" standalone=&quot ...

  3. MySQL5日期类型DATETIME和TIMESTAMP相关问题详解

    MySQL5日期类型DATETIME和TIMESTAMP相关问题详解 MySQL5的日期类型有三种:DATETIME.DATE和TIMESTAMP,除了DATE用来表示一个不带时分秒的是日期,另外两个 ...

  4. dede 如何去除&lbrack;field&colon;title&sol;&rsqb;里面出现的b标签

    调用[field:title/]标签,两边加<b>怎么去掉<b> 怎么回事??? 最近更新dede的版本后,调用[field:title/]标签,生成的标题两边会自动在标题两边 ...

  5. Gdi绘图

    在使用VC开发项目过程中,界面是项目中的一个子模块.虽然界面并不那么重要,把握住核心功能就可以了,但界面美观与否直接关系到用户的体验, 因此我们也应该关注界面的处理. 我们可以在OnEraseBkgn ...

  6. JAVA中数组Array与List互转

    List<String> list = new ArrayList<String>();String[] array = new String[10]; 1.数组转成Listl ...

  7. npm是什么

    npm简介 *中npm定义 npm完全用JavaScript写成,最初由艾萨克·施吕特(Isaac Z. Schlueter)开发. 艾萨克表示自己意识到"模块管理很糟糕"的 ...

  8. spark快速开发之scala基础之3类,对象,特征

    类 scala的类定义非常灵活 class test4 class test2{} class test3(x:Int) 定义一个带构造函数的类 class Point (x : Int,y : In ...

  9. LoadRunner参数化时的中文乱码问题

    http://blog.sina.com.cn/s/blog_6cf205160100mdxi.html

  10. 转:win32下的堆管理系统

    转:https://bbs.pediy.com/thread-224136.htm 准备刷漏洞战争中的堆溢出部分,但是对于堆的了解较少,在这里记录一下关于堆的学习记录,有错误请各位大大拍砖 参考: & ...