您现在的位置是:课程教程文章
sleep在java中的实现
2023-12-15 21:16课程教程文章 人已围观
-
JavaScript开发入门+案例实操教程第2季
JavaScript开发入门+案例实操教程第2季课程咨询和资料获取请加老师QQ 1011800132 JavaScript 是一种轻量级的编程语言。 ... -
【体系化】Java零基础java基础课程(Java
【体系化】Java零基础java基础课程(Java【体系化】Java零基础全套课程(JavaSE阶段零基础) ==需要更多学习资料请加Q... -
搭建Java学生选课系统【附源码】(毕设)
搭建Java学生选课系统【附源码】(毕设)本课程演示的是一套 基于JavaWeb实现的学生选课系统 ,主要针对计算机相关专业... -
Java多线程面试120题、多线程高并发性能调
Java多线程面试120题、多线程高并发性能调我们的多线程课程都 可以有条件免费领取 ,欢迎扫码添加京东架构师黄老邪微...
我们使用电脑进行休眠,和线程中的休眠有一些不同。在线程中我们使用sleep,需要说明锁的问题。sleep和wait最明显的不同之处,是调用sleep方法并不会释放锁。下面我们就sleep()的概念、和wait的区别进行讲解,帮助大家理解sleep的用法,然后带来sleep的使用示例。
1.sleep()概念
让当前线程休眠(正在执行的线程主动让出cpu,然后cpu就可以去执行其他任务),即当前线程会从“运行状态”进入到“休眠(阻塞)状态”。
sleep()会指定休眠时间,线程休眠的时候会大于或者等于该休眠时间,当时间过后该线程重新被会形式,他会由“阻塞状态”编程“就绪状态”,从而等待cpu的调度执行,
注意:sleep方法只是让出了cpu的执行权,并不会释放同步资源锁。
sleep和wait区别
(1) Thread类的方法:sleep(),yield()
Object的方法:wait()和notify()、notifyAll()
(2)每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。 sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
(3)wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用 。注意:wiat()必须放在synchronized block中,否则会在program runtime时扔出“java.lang.IllegalMonitorStateException”异常。
(4)sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
3.sleep()实例
void THREAD_sleep(int seconds) { #ifdef windows Sleep(1000L * seconds); #else sleep(seconds); #endif }
以上就是sleep在java中的实现,当我们选择不释放锁时用sleep,释放锁可以选择wait,相信今天今天的讲解,大家已经对sleep的用法有了深刻的认知。
课程教程:sleep在java中的实现上一篇:js赋值运算符的作用
下一篇:没有了