2020-09-15:java里的wait()和sleep()的区别有哪些?

2020-09-16 10:09:52 浏览数 (2)

福哥答案2020-09-15:#福大大架构师每日一题#

1.线程状态。wait()的线程状态是TimedWaiting和Waiting。sleep()的线程状态是Waiting。

2.指定时间。wait()可以指定时间也可以不指定时间。sleep()必须指定时间。

3.释放锁。wait()释放锁并且加入等待队列,常用于线程间交互。sleep()不会释放锁,常用于暂停执行。

4.同步块。wait()需要在同步块里使用,否则抛出IllegalMonitorStateException异常。sleep()不需要。

5.所在类。wait()是Object里的方法。sleep是Thread里的静态方法。

6.唤醒。wait()需要被唤醒(不指定时间需要被别人唤醒),notify()、notifyAll()、interrupt()。sleep()不需要被唤醒(休眠之后退出阻塞),时间到或者interrupt()。

7.捕获异常。wait()没指定时间不需要捕获异常,指定了时间需要捕获异常。sleep()需要捕获异常。

0 人点赞