Thread sleep() wait()
学艺不精,先总结一下两者的区别:
对比项 | wait | sleep |
类所属 | Object | Thread,static方法 |
使用 |
在synchronised block中(包括notify,notifyAll) |
Thread.sleep(long time); |
作用 | 导致线程暂停执行指定时间,让出cpu给其他线程 | |
monitor锁 | 放弃 | 保持监控状态 |
唤醒方法 | notify,notifyAll,等待时间到 | 到时间自动恢复 |
异常 | 无 | 抛出InterruptedException |
本质 | 线程之间通讯 | 线程状态控制 |
比喻 |
淘米-做饭-吃饭:淘米之后,wait,等待别人通知我 做饭和吃饭,别人可以借用我做饭用的工具 |
淘米-做饭-吃饭:淘米之后,sleep(1000), 睡醒之后再做饭和吃饭,睡觉期间别人不可以借用我做饭用的工具 |