(1)sleep为Thread方法,wait为Object方法
(2)sleep不释放同步锁,wait释放同步锁
sleep:只是让线程进入睡眠状态,等待一段时间进入可运行状态,不释放同步锁
wait:线程进入wait方法之前,需要持有对象锁,进入以后会释放
(3) wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,sleep可以在任何地方使用
(4)sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
sleep:在sleep过程中有可能被其他对象调用他的interrupt方法,产生InterruptedException异常,需要捕获,如果不捕获,线程就会异常,进入TERMINATED状态
wait:进入wait方式时需要持有对象锁,如果未持有,则会引发IllegalMonitorStateException,它是RuntimeException的一个子类,因此,不需要try-catch结构。