您的位置 首页 java

「每天一道面试题」wait()和sleep()区别?

  1. wait()方法属于Object,sleep()方法属于Thread;

  2. wait()方法会主动释放持有的锁,而sleep()方法不会释放持有的锁;

  3. wait()方法只能在同步方法或同步代码块中调用,否则会抛IllegalMonitorStateExeception,sleep()方法没有这个限制;

引申一下:为什么wait()方法会主动释放持有的锁?

因为如果wait()不释放持有的锁,那么其它 线程 将不能进入同步方法或同步代码块,进而不能调用notify()、notifyAll()方法唤醒线程,产生 死锁 !释放锁,让其它线程执行,也可以唤醒自己。

文章来源:智云一二三科技

文章标题:「每天一道面试题」wait()和sleep()区别?

文章地址:https://www.zhihuclub.com/192829.shtml

关于作者: 智云科技

热门文章

网站地图