从表面上看,wait和sleep方法都可以使当前线程进入阻塞状态,但是两者之间存在本质的区别,下面我们将总结两者的区别和相似之处:
wait和sleep方法都可以使线程进入阻塞状态。
wait和sleep方法均是可中断方法,被中断后都会收到中断异常。
wait是Objcct的方法,而sleep是Thread特有的方法。
wait方法的执行必须在同步方法中进行,而sleep则不需要。
线程在同步方法中执行sleep方法时,并不会释放monitor的锁,而wait方法则会释放monitor的锁。
sleep方法短暂休眠之后会主动退出阻塞,而wait方法(没有指定wait 时间)则需要被其他线程中断后才能退出阻塞。