您的位置:首页 > 科技 > IT业 > 建站教程的实现方式_推广宣传_全球十大搜索引擎入口_郑州seo学校

建站教程的实现方式_推广宣传_全球十大搜索引擎入口_郑州seo学校

2025/3/16 5:38:05 来源:https://blog.csdn.net/qq_74011163/article/details/146215469  浏览:    关键词:建站教程的实现方式_推广宣传_全球十大搜索引擎入口_郑州seo学校
建站教程的实现方式_推广宣传_全球十大搜索引擎入口_郑州seo学校

今天给大家讲解一个经典面试题,也是出现频率比较高的面试题“wait()和sleep()的区别”?

我们先来说说sleep()方法。它是Thread中的一个静态方法。可以使用Thread.sleep();进行直接调用,表示让线程处于休眠状态。可以使用在任何线程的代码中,Thread.sleep()写在哪个线程就表示让哪个线程休眠,达到指定的休眠状态后线程自动恢复运行状态。

在Thread中有重载了两个sleep()方法,sheep(long):void 和 sheep(long,int) void,其中使用的最多的是第一个sleep(long);参数表示休眠的毫秒数。

sleep()方法说完之后说一下wait()方法。

wait() 是Object中的方法。调用wait()后会让线程从运行状态变为阻塞状态。

在Object类中提供了wait()的重载方法:

wait()方法会让线程变为阻塞,阻塞的同时会释放锁。所以wait()必须要求被等待的线程持有锁,调用 wait()后会把锁释放,其他线程竞争获取锁。当其他线程竞争获取到锁以后,如果达到某个条件后可以通过notify()唤醒,如果有多个wait的线程,系统判断唤醒其中一个。也可以使用notifyAll全部唤醒。唤醒后线程处于就绪状态。(一个线程唤醒其他线程时,要求当前线程必须持有锁.)

 总之:1. 使用wait()和notify() | notifyAll()要求必须有锁。所以wait()、notify()、notifyAll() 都是放入锁的代码中。 2. wait()后的线程需要通过notify() | notifyAll() 唤醒。

通过上面内容小伙伴应该知道了wait()和sleep()的使用方式,下面给小伙伴们分门别类的总结一下wait() 和sleep()的区别:

1. 所属类不同。

        wait(long) 是Object中方法,sleep(long)是Thread的方法

2. 唤醒机制不同。

        wait() 没有设置最大时间情况下,必须等待notify() | notifyAll() sleep()是到指定时间自动唤醒。

3. 锁机制不同

        wait(long)释放锁,sleep(long)只是让线程休眠,不会释放锁。

4. 使用位置不同

        wait()必须在持有锁的线程代码中,sleep()可以使用在任意地方。

5. 方法类型不同

        wait()是实例方法,sleep()是静态方法。

都看到这里了点一个免费的赞吧!(求求啦)

想要获取大厂面试资料+学习规划,关注我,回复:面试题,获取资料!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com