wait()和sleep()有什么区别?调用这两个函数后,线程状态分别作何改变?

本文对比了Java中的wait()和sleep()函数,它们都使线程进入阻塞状态。wait()在Object类中定义,需在同步代码块或方法中使用,会释放同步监视器,可通过notify唤醒;而sleep()在Thread类中定义,更灵活,不释放监视器,自动结束后继续执行或等待通知。
摘要由CSDN通过智能技术生成

wait()和sleep()有什么区别?调用这两个函数后,线程状态分别作何改变?

相同点:一旦执行,当前线程都会进入阻塞状态

不同点:

声明的位置:wait():声明在Object类中
sleep():声明在Thread类中,静态的
使用的场景不同:wait():只能使用在同步代码块或同步方法中
sleep():可以在任何需要使用的场景
使用在同步代码块或同步方法中:wait():一旦执行,会释放同步监视器
sleep():一旦执行,不会释放同步监视器
结束阻塞的方式:wait(): 到达指定时间自动结束阻塞 或 通过被notify唤醒,结束阻塞
sleep(): 到达指定时间自动结束阻塞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~久违~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值