wait方法和sleep方法的区别

2020-02-26  本文已影响0人  Charon笔记

1.方法来源区别

wait方法定义在Object上,Thread.sleep()定义在Thread上(这很重要,定义决定作用范围)

2.关于锁和cpu

结论:二者都释放cpu,wait()释放锁,Thread.sleep()不会释放锁.
解释如下:
1.别管是Object.wait()还是Thread.sleep(),都是暂停执行,所以这里都会释放cpu.
2.Object.wait()方法是对象拥有,然后对象锁又是在synchronized同步代码块中使用,所以Object.wait()方法拥有锁的控制权,所以他会释放锁资源.而Thread.sleep()是Thread上的静态方法,所以只能使当前线程睡眠,但是它和锁没有任何关系,所以就没有锁的释放这一问题.

3.作用范围

4 关于异常

Object.wait()方法和Thread.sleep()都 抛出 InterruptedException,并且方法定义为final,
所以方法不能被重写,那么在使用 该方法时就只能 try()catch(){}异常,(为什么说只能try,因为如果不捕获异常,那么也意味着你的方法抛出的异常就只能是InterruptedException,或者它的子类,所以这里一般都是捕获异常并处理异常,可以在catch中抛出其他异常)

上一篇下一篇

猜你喜欢

热点阅读