java基础---sleep和wait的区别

MediaPipe实战:从零构建人脸关键点检测应用 本文详细介绍了如何使用Google的MediaPipe框架从零构建一个实时人脸关键点检测应用。文章深入剖析了MediaPipe的三段式检测流水线,提供了Android平台的完整实战教程,包括环境配置、模型加载、摄像头集成、关键点绘制以及性能调优指南,帮助开发者快速实现高效、跨平台的人脸AR特效与交互功能。 阅读详情

/*

wait和sleep区别
	1.wait可以指定也可以不用指定时间,
	sleep必须指定时间
	
	2.在同步中,对cpu的执行权释放不同
	wait:释放执行权,释放锁;
	sleep:释放执行权,不释放锁;


	1.首先,要记住这个差别,“sleep是Thread类的方法,wait是Object类中定义的方法”。
尽管这两个方法都会影响线程的执行行为,但是本质上是有区别的。

	2.Thread.sleep不会导致锁行为的改变,如果当前线程是拥有锁的,那么Thread.sleep
不会让线程释放锁。如果能够帮助你记忆的话,可以简单认为和锁相关的方法都定义在
Object类中,因此调用Thread.sleep是不会影响锁的相关行为。

	3.Thread.sleep和Object.wait都会暂停当前的线程,对于CPU资源来说,不管是哪种方
式暂停的线程,都表示它暂时不再需要CPU的执行时间。OS会将执行时间分配给其它线程。
区别是,调用wait后,需要别的线程执行notify/notifyAll才能够重新获得CPU执行时间。
线程的状态参考 Thread.State的定义。新创建的但是没有执行(还没有调用start())的
线程处于“就绪”,或者说Thread.State.NEW状态。

	4.Thread.State.BLOCKED(阻塞)表示线程正在获取锁时,因为锁不能获取到而被迫暂停
执行下面的指令,一直等到这个锁被别的线程释放。BLOCKED状态下线程,OS调度机制需要
决定下一个能够获取锁的线程是哪个,这种情况下,就是产生锁的争用,无论如何这都是很
耗时的操作。
*/


class  
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}



线程间的状态转换: 

1. 新建(new):新创建了一个线程对象。

2. 可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。

3. 运行(running):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。

4. 阻塞(block):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状态。阻塞的情况分三种: 

(一). 等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。

(二). 同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。

(三). 其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。

5. 死亡(dead):线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。

SolidWorks速成教程P1——简介及基础操作 SolidWorks教程P1——简介及基础操作 阅读详情

相关推荐

避开这5个坑!STC8H DMA串口通信的实战避坑指南(115200波特率实测)

本文深入解析了STC8H单片机利用DMA实现稳定全双工串口通信的实战要点。针对115200高波特率场景,详细拆解了DMA-UART架构、关键寄存器配置、时钟精度计算、缓冲区管理及中断协同等核心环节,并提供了具体的避坑指南和调试方法,帮助开发者构建高效可靠的通信链路。

melon的博客 675

[JAVA灵魂10问]关于sleep与wait的思考

关于sleep与wait的思考 写在前面的话 一说到sleep和wait的区别,最先想到是的 1.时间 sleep可以设置时间,wait一般不设置时间需要唤醒 2.对象锁 sleep不释放对象锁,而wait释放对象锁 sleep和wait的核心区别 sleep方法是静态的 ** wait是成员方法** sleep 关于sleep在java源码中只有简单的一句话 public static native void sleep(long millis) throws InterruptedException;

Bryce_Loski的博客 343

AIGC大模型应用教学平台

该平台采用最新的AI推理加速芯片,提供30Tops算力和32GB存储,能够运行常见的大语言模型如ChatGLM2、Llama2、Baicuan、Mistral等,也可以运行文生图扩散模型Stable Diffusion,提供大模型微调、量化、转换和加速推理服务。在此基础上,平台还提供常见的生成式AI应用,包括AIGC知识抽取增强(RAG)、AIGC绘画、AIGC会话聊天、数字虚拟人等应用,以便学生能够掌握最新的生成式AI模型微调、提示工程和智能体应用技能。

中智讯的博客 1208

【C语言】Sleep()函数----详解

在C语言中,sleep函数是一个非常有用的函数,用于实现程序的延时功能。无论是在控制程序执行速度、模拟实时系统、或者创建交互式用户体验,sleep函数都能够发挥重要作用。它允许程序在指定的时间间隔内暂停执行,并在暂停期间使系统的处理器资源得到休息。通过使用sleep函数,程序员可以轻松地控制程序的执行速度,以适应不同的场景和要求。它可以帮助程序实现精确的时间控制,例如在游戏开发中实现动画效果的流畅展示,或者在多线程编程中确保不同线程的协调运行。此外,sleep函数。

深入解析C/C++编程技巧,带你探索高效开发之路 4万+

避开RK3588开发板SDIO配置的坑:O9201SB WiFi模组接入实战指南

本文为嵌入式开发者提供了在RK3588开发板上,利用TF卡槽接入O9201SB WiFi6模组的实战指南。文章深度剖析了SDIO配置中常见的电源管理序列冲突问题,并给出了从设备树节点修改、内核编译到系统验证的完整解决方案,帮助开发者避开配置陷阱,成功实现高性能无线连接。

sprite的博客 954

NRF52832串口通信避坑指南:从SDK配置到硬件流控(RTS/CTS)实战

本文详细介绍了NRF52832串口通信的实战指南,从SDK配置到硬件流控(RTS/CTS)的完整实现。通过分析UARTE模块特性、解决SDK版本差异问题、正确配置硬件引脚以及实现稳定通信的代码示例,帮助开发者避开常见陷阱,确保高效可靠的串口通信。特别强调了硬件流控在高速通信中的重要性及其实践方法。

weixin_33739646的博客 283

java多线程中sleep和wait的4个区别,你知道几个?

sleep和wait的区别是面试中一个非常常见的问题,因为从表象来看,好像sleep和wait都能使线程处于阻塞状态,但是却有着本质上的却别。这篇文章就来好好分析一下。 整体的区别其实是有四个: 1、sleep是线程中的方法,但是wait是Object中的方法。 2、sleep方法不会释放lock,但是wait会释放,而且会加入到等待队列中。 3、sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。 4、sleep不需要被唤醒(休眠之后推出阻塞

qq_39890679的博客 3631

VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

[课程学习] VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

夏风喃喃的博客 1604

sleep方法的使用,进入sleep状态不释放锁

Thread类中的静态方法sleep(),当一个执行中的线程调用了Thread的sleep()方法后,调用线程会暂时让出时间的执行权,这期间不参与cpu的调度,但是该线程持有的锁是不让出的。时间到了会正常返回,线程处于就绪状态,然后参与cpu调度,获取到cpu资源之后就可以运行。 如果在睡眠期间,其他线程调用了该线程的interrup()的方法中断了该线程,则该线程会调用sleep方法的地方抛出I...

hello world 1万+

光电系统光轴校准与偏差控制实战指南

光轴作为光电系统的空间基准坐标系,直接影响多光谱传感器的协同工作精度。在包含可见光、红外与激光测距的复合系统中,光轴偏差会导致目标识别误差与打击精度下降。通过机械基准建立、光学通道粗调和多光谱协同校准等工厂级标定流程,结合千米靶标法、星点校准法等野战应急方案,可有效控制光轴偏差。典型应用场景中,温度补偿与振动抑制技术能维持光轴稳定性,如某舰载系统通过500Hz高频视觉伺服实现0.3mrad振动补偿。掌握这些光轴标定与保持策略,对提升光电系统在侦察、测距等场景的实战性能具有关键价值。

weixin_36149538的博客 277

【OpenBMC 系列】4.启动流程 使用qume模拟ast2600-evb

1.安装openbmc适配的qume 2.启动bmc 3.使用bmc web

AiFool的博客 4459

【java基础】sleep和wait的区别

本文原地址:https://www.dyzhello.club/static/page/readArticle.html?id=15448 原创内容转载请注明 wait(),sleep() 的区别 wait():Object类中定义的实例方法。在指定对象上调用wait方法会让当前线程进入等待状态(前提是当前线程持有该对象的monitor。ps:java中锁是对monitor的实现),此时当前...

qq_33947548的博客 171

12S BMS 核心设计:基于 STM32H743+BQ34Z100 的 SOC/SOH 实现与全链路技术解析(上)

本文详细介绍了基于STM32H743和BQ34Z100的12串锂电池管理系统(BMS)设计。该系统采用主控制器+专用电量监测计架构,可实现高精度SOC(±1%)和SOH(±2%)估算,支持36V-50.4V电压范围。硬件设计包括电压/电流采样、温度测量、保护电路等模块,软件实现基于HAL库开发,采用DMA方式提高I2C通信效率。系统通过TI专利的ImpedanceTrack™算法实现三维融合估算,并具备完善的保护功能。该设计适用于电动工具、轻型电动车等中功率设备,具有精度高、响应快。

bother3000的博客 1393

Java基础-sleep和wait的区别

本文介绍Java中sleep和wait方法的使用区别。

Miao的博客 493

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java基础之wait 和 sleep 区别?

1,wait可以指定时间也可以不指定。 sleep必须指定时间。 2,在同步中时,对cpu的执行权和锁的处理不同。 wait:释放执行权,释放锁。 sleep:释放执行权,不释放锁。 class Demo { void show() { synchronized(this)// { wait();//t0 t1 t2 } } void method() { synchronized(this)//t4 { //wait(); noti

独狼的博客 109

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JUC:1_基础知识:什么是JUC、进程和线程的区别、Java有几个线程、Java是否真的可以开启线程、并发和并行、Java线程状态、wait和sleep区别

JUC:基础知识:进程和线程的区别、Java有几个线程、Java是否真的可以开启线程、并发和并行、Java线程状态、wait和sleep区别Runable进程和线程的区别Java中的线程需要弄明白的Java有几个线程?Java是否真的可以开启线程?并发和并行Java线程状态:Thread.Statewait和sleep区别来自不同的类关于锁的释放适用范围不同是否需要捕获异常 Runable Runable:没有返回值,效率比Callable低,功能也没有Callable强大,没有Callable常用。 进程

郝开的博客 631

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java基础系列(六) sleep()和wait() 区别

wait() 和 sleep() 区别

u012514113的专栏 766

【JAVA基础系列】JAVA线程wait()方法和sleep()方法有什么区别,又有什么相同点,什么时候用wait方法什么时候用sleep方法

【JAVA基础系列】JAVA线程wait()方法和sleep()方法有什么区别,又有什么相同点,什么时候用wait方法什么时候用sleep方法在Java中,wait()和sleep()方法都是用于让线程暂停执行一段时间,但它们之间存在显著的差异,主要体现在所属类、唤醒方式、是否释放锁等方面。

xzb5566的专栏 571

Java基础---wait和sleep方法的区别

1.wati和sleep方法的区别 wait:此方法来自与Object类,必须由锁对象进行调用 sleep:此方法来自于Thread类,是Thread类的静态方法,可以类名点调用 2..wati和sleep方法的原理对比 sleep:让当前程序进行休眠xxx毫秒,休眠之后,程序继续执行 wait(有参数):如果使用wait方法是传入毫秒...

weixin_48260015的博客 529

【面试】Java中sleep方法和wait方法的区别? --Java基础

Java中sleep方法和wait方法的区别 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁)。 wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围) 。 sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常 。 ...

fcvtb的博客 231

Java基础 sleep()和wait()的区别

对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。 sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 在调用sleep()方法的过程中,线程不会释放对象锁。 而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只

Less Is More 329

【Java基础面试题015】Java中wait()和sleep()的区别?

线程反复尝试获取锁而陷入等待状态,从而出现线程饥饿。在任何上下文中调用,不需要获取锁对象。必须在同步代码块或同步方法内使用。控制线程的执行频率或者模拟延时。

lklalmq的博客 405

Java并发基础---sleep和wait的区别

sleep是Thread的方法,wait是Object的方法 sleep可以在任何地方调用,.wait只能在syncronized方法/块中调用 sleep只会释放CPU,不会释放锁资源。wait会释放锁资源。 ...

joy_pan的博客 163

Java基础-java中的sleep()和wait()的区别

http://www.cnblogs.com/hongten/p/hongten_java_sleep_wait.html

ych4513979的专栏 313

java中的wait()方法和sleep()方法的区别是什么?| Java 基础

java中的wait()方法和sleep()方法的区别是什么? 简单说:sleep由线程自动唤醒,wait必须显示用代码唤醒。 sleep是Thread类的静态方法。sleep的作用是让线程休眠制定的时间,在时间到达时恢复,也就是说sleep将在接到时间到达事件事恢复线程执行,例如: try{ System.out.println("I'mgoing to bed"); Th

hdtopku 738
上一篇: Eclipse 中web项目报 target runtime apache tomcat XX.XX is not defined.
下一篇: java基础---Java中守护线程的总结
big_bit
博客等级 码龄11年 67粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值