线程休眠注意点

  • sleep(时间)指定当前线程阻塞的毫秒数
  • sleep存在异常InterruptedException
  • sleep时间达到后线程进入就绪状态
  • sleep可以模拟网络延时,倒计时等
  • 每个对象都有一个锁,sleep不会释放锁

线程休眠实例

//模拟网络延时:放大问题的发生性
public class TestSleep implements Runnable{//票数private int ticketNums = 10;@Overridepublic void run() {while (true){if (ticketNums <= 0){break;}//模拟延时try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"--》拿到了第"+ticketNums--+"票");}}public static void main(String[] args) {TestSleep ticket = new TestSleep();new Thread(ticket,"小明").start();new Thread(ticket,"老师").start();new Thread(ticket,"小红").start();}
}

执行结果


老师--》拿到了第9票
小明--》拿到了第10票
小红--》拿到了第8票
老师--》拿到了第7票
小明--》拿到了第7票
小红--》拿到了第7票
老师--》拿到了第6票
小红--》拿到了第4票
小明--》拿到了第5票
小明--》拿到了第3票
老师--》拿到了第2票
小红--》拿到了第1票
public class TestSleep2 {public static void main(String[] args) {//模拟倒计时try {tenDown();} catch (InterruptedException e) {e.printStackTrace();}//打印系统当前时间Date startTime = new Date(System.currentTimeMillis());//获取系统当前时间while (true){try {Thread.sleep(1000);System.out.println(new SimpleDateFormat("HH:mm:ss").format(startTime));startTime = new Date(System.currentTimeMillis());//更新当前时间} catch (InterruptedException e) {e.printStackTrace();}}}public static void tenDown() throws InterruptedException {int num = 10;while (true){Thread.sleep(1000);System.out.println(num--);if (num<=0){break;}}}
}

执行结果

10
9
8
7
6
5
4
3
2
1
17:06:35
17:06:36
17:06:37

Java多线程:线程休眠相关推荐

  1. JAVA --- 多线程 -- 线程的创建

    JAVA - 多线程 – 线程的创建 线程的概念: 说起线程,先说程序和进程,多任务的概念. 程序(program):是指令和数据的有序集合,本身没有任何运行的含义,是一个静态的概念. 进程(proc ...

  2. Java多线程——线程的优先级和生命周期

    Java多线程--线程的优先级和生命周期 摘要:本文主要介绍了线程的优先级以及线程有哪些生命周期. 部分内容来自以下博客: https://www.cnblogs.com/sunddenly/p/41 ...

  3. java多线程 线程安全_Java中的线程安全

    java多线程 线程安全 Thread Safety in Java is a very important topic. Java provides multi-threaded environme ...

  4. java多线程-线程的停止【interrupt】

    java多线程-线程的停止 文章目录 java多线程-线程的停止 线程停止的原理 如何正确停止线程 在普通情况下停止线程 代码展示 在阻塞情况下停止线程 代码展示 线程在每次迭代后都阻塞 代码展示 停 ...

  5. Java 多线程线程安全(面试概念解答二)

    Java 多线程线程安全 什么是线程安全? 为什么有线程安全问题? 线程安全解决办法? 同步代码块 同步函数 静态同步函数 多线程死锁 多线程的三大特性 原子性 可见性 有序性 Java内存模型 Vo ...

  6. Java多线程-线程的创建(Thread类的基本使用)

    文章目录 一. 线程和Thread类 1. 线程和Thread类 1.1 Thread类的构造方法 1.2 启用线程的相关方法 2. 创建第一个Java多线程程序 3. 使用Runnable对象创建线 ...

  7. java多线程-线程创建-线程池-java内存模型

    文章目录 ==多线程基础== 进程 线程 浏览器的进程和线程(案例) 线程的异步和同步 多线程的优势 ==多线程的实现方式== 第一种:继承Thread类 第二种:实现Runnable接口 第三种:通 ...

  8. Java多线程-线程的同步与锁

    一.同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏. 例如:两个线程ThreadA.ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据. package ...

  9. Java多线程 ——线程基础和锁锁锁

    Java多线程(一) 一.线程的定义 二.Synchronize线程同步 三.偏向锁.自旋锁.重量级锁 四.volatile关键字 4.1.普通变量运算的物理意义 4.2.有无解决的方案 4.3.vo ...

  10. 【Java系列】(四)Java多线程---线程安全

    前言: 记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT.Socket.多线程.I/O,编写的客户端和服务器,当时做出来很兴奋,回学校给同学们演示,感觉自己好NB,呵呵,扯远 ...

最新文章

  1. 系统进程管理及用户登陆监控
  2. 何凯明团队又出新论文!联合北大、上交用ViT做迁移学习,效果惊人!
  3. 数据库防护技术对比分析
  4. C#利用Attribute实现简易AOP介绍 (转载)
  5. NodeJS加MongoDB应用入门
  6. firefox英文网页乱码解决方法
  7. poj 1092 Farmland (Geometry)
  8. 2019\National _C_C++_B\1.求2019<X<Y ,使2019*2019,X*X,Y*Y组成等差数列且X+Y最小.
  9. .NET Core 2.0 特性介绍和使用指南
  10. 最牛逼的微服务架构方案,没有之一!
  11. java jar命令_Java命令行之jar命令
  12. 测试面试题集-Python花式打印九九乘法口诀表
  13. linux 内核参数分析,linux 内核参数VM调优 之 参数调节和场景分析
  14. 关于collectionView的一些内容
  15. 解决微信小程序图片上传点击无反应问题
  16. Java当中多个pdf文件合并为一个
  17. 乌合之众-大众心理研究(五)
  18. SANGFOR SCSA——协议基础
  19. elasticsearch的基础使用(二)
  20. 阿里云发布首款云电脑“无影”,价格仅传统电脑的一半

热门文章

  1. django-django的开发流程
  2. wordpress主题的样式修改
  3. robot framework集成Jenkins环境
  4. 架构漫谈(三):如何做好架构之识别问题
  5. MySQL学习笔记之MySQL安装详解
  6. Dom4j 解析Xml文档及 XPath查询 学习笔记
  7. 你所不知道的模块调试技巧 - npm link #17
  8. Hibernate Criteria示例教程
  9. TCP UDP的区别
  10. LSA类型讲解——LSA-5(第5类LSA——Autonomous System External LSA)、LSA-4(第四类LSA——ASBR Summary LSA)讲解