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


解密阿里巴巴面试题:wait和sleep的区别_第1张图片

大家好,我是小米!今天要和大家聊一个挺有技术深度的话题——阿里巴巴面试题中经常考察的“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 锁,在同步代码中执行 s

你可能感兴趣的:(博客搬家,java,面试,开发语言)