Java:线程休眠
2021/5/17 22:25:38
本文主要是介绍Java:线程休眠,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- sleep(毫秒):指定当前线程阻塞的毫秒数(1000毫秒=1秒)
- sleep存在异常InterruptedException,需要抛出异常
- sleep时间达到后线程进入就绪状态(线程五个状态的就绪状态)
- sleep可以模拟网络延迟(作用:放大问题的发生性)、倒计时、获取当前时间等
- 每一个对象都有一个锁,sleep不会释放锁
package com.jiemyx.thread.demo02; public class ThreadSleep01 implements Runnable{ //票数 private int ticketNums = 10; @Override public void run() { while (true){ if (ticketNums<=0){ break; } //模拟网络延时,放大问题的发生性 try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "-->拿到了第" + ticketNums-- + "票"); } } public static void main(String[] args) { ThreadSleep01 ticket = new ThreadSleep01(); new Thread(ticket,"小明").start(); new Thread(ticket,"老师").start(); new Thread(ticket,"黄牛党").start(); } }
运行结果:
小明-->拿到了第10票
黄牛党-->拿到了第9票
老师-->拿到了第8票
小明-->拿到了第7票
老师-->拿到了第6票
黄牛党-->拿到了第5票
小明-->拿到了第4票
黄牛党-->拿到了第3票
老师-->拿到了第2票
小明-->拿到了第1票
老师-->拿到了第0票
黄牛党-->拿到了第-1
package com.jiemyx.thread.demo02; //模拟倒计时 public class ThreadSleep02 { public static void main(String[] args) { try { tenDown(); } 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
package com.jiemyx.thread.demo02; import java.text.SimpleDateFormat; import java.util.Date; public class ThreadSleep03 { public static void main(String[] args) { //打印当前系统时间 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(); } } } }
运行结果:
20:51:09
20:51:10
20:51:11
20:51:12
......
(在IDEA开发软件中,可以点旁边的红色正方形停止运行,或者ctrl+f2停止运行)
这篇关于Java:线程休眠的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程