Java多线程的sleep休眠的实现
了解这样的几个概念:
1.sleep指向当前线程阻塞的毫秒数(就是可以让线程停一会)
2.sleep 存在异常 InterruptedException3.sleep 时间达到后线程进入就绪状态4.sleep 可以模拟网络延时,倒计时等5.sleep 每一个对象都有一个锁,sleep 不会释放锁
写源码:
package Demo04;
public class TestSleep implements Runnable{ //使用Runnable方法创建程序线程
private int ticketNums =10; //有10张票
@Override
public void run() { //重写run方法
while (true){ //写while 循环
if (ticketNums<=0){ //当票数小于等于0
break; //停止循环
}
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();
}
}看结果:

在这个结果当中,有重复,但是不明显
加sleep 休眠
package Demo04;
public class TestSleep implements Runnable{
private int ticketNums =10;
@Override
public void run() {
while (true){
if (ticketNums<=0){
break;
}
try {
Thread.sleep(5); //让线程睡了5秒的时间 (模拟网络延迟)
}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();
}
}看结果:

这样的重复会很多,所以sleep(休眠),起到模拟网络延迟的作用, 可以放大问题的可见性以及发生性
就是 ,有上面重复的 结果显得明显,即:多线程是不安全的
再写一个实例:
模拟倒计时:
package Demo04;
//模拟倒计时
public class TestSleep02 {
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;
}
}
}
}看结果

它的显示结果:(注意: 1000ms=1秒)
就是它会从十到一每隔一秒显示一个数字,一直到一
到此这篇关于Java多线程的sleep休眠的实现的文章就介绍到这了,更多相关Java多线程sleep休眠内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中的system.getProperty()的作用及使用方法
System.getProperty() 方法用于获取系统属性的值,该方法接受一个字符串参数,表示要获取的系统属性的名称,返回值为字符串类型,表示该属性的值,接下来通过本文给大家介绍Java中的system.getProperty()的作用及使用方法,感兴趣的朋友跟随小编一起看看吧2023-05-05
jdk中动态代理异常处理分析:UndeclaredThrowableException
最近在工作中遇到了报UndeclaredThrowableException的错误,通过查找相关的资料,终于解决了,所以这篇文章主要给大家介绍了关于jdk中动态代理异常处理分析:UndeclaredThrowableException的相关资料,需要的朋友可以参考下2018-04-04
IDEA创建Maven项目后报错不出现src文件夹的情况解决
最近刚开始学习maven,正准备使用idea创建一个maven项目练手,却发现自己创建的maven项目始终没有src目录,下面这篇文章主要给大家介绍了关于IDEA创建Maven项目后报错不出现src文件夹的情况解决,需要的朋友可以参考下2023-05-05
maven依赖包冲突SLF4J: Class path contains multiple SLF4J bi
这篇文章主要给大家介绍了关于maven依赖包冲突SLF4J: Class path contains multiple SLF4J bindings的处理方法,这个问题通常是因为项目中存在多个SLF4J的实现绑定(bindings)导致的冲突,需要的朋友可以参考下2024-02-02
java开发web前端cookie session及token会话机制详解
如果把人体比作一个web系统的话,cookie、session和token就好像人体的经络和血管一样,而web系统中的数据,就好像人体的血液一样。血液依靠着血管在人体内流动,就如数据根据cookie和session机制在web系统中流动一样2021-10-10


最新评论