解密阿里巴巴面试题:wait和sleep的区别


大家好,我是小米!今天要和大家聊一个挺有技术深度的话题——阿里巴巴面试题中经常考察的“wait和sleep”之间的区别。在我们深入探讨之前,先来个简单的了解,不是说“等待”和“睡眠”一样吗?嗯,确实有点相似,但在Java中它们可是完全不同的两回事。废话不多说,让我们一起揭晓这个谜题吧!

wait方法 vs. sleep方法

首先,我们来看一下wait方法和sleep方法的一个显著区别——synchronized关键字。

  • wait 方法必须在 synchronized 保护的代码中使用,而 sleep 方法并没有这个要求。

在Java中,synchronized关键字用于实现同步,确保在多线程环境中代码块的原子性执行。而wait方法就显得有点挑剔,只能在已经获取了对象的监视器(monitor)的情况下才能被调用。这也就意味着,如果你想在wait方法中玩儿多线程,得先敲上synchronized的大门。

相反,sleep方法就没那么挑剔,你可以在任何地方使用,没啥限制。所以,要根据实际情况选择使用wait还是sleep,不能随便搞哦!

monitor 锁的释放

wait和sleep在释放monitor锁这一点上也有明显的不同。

  • wait 方法会主动释放 monitor 锁,在同步代码中
  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

软件求生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值