Java中wait和sleep方法的区别
sleep属于Thread类的方法,使线程进入睡眠状态。等待一段时间就可以可运行状态,不会释放所持有的对象锁,在sleep的过程中,有可能被其他对象调用它的interrupt(),产生InterruptedException异常,如果不捕获该异常,线程就会异常终止,进入TERMINATED状态,如果你的程序捕获了这个异常,那么程序就会继续执行catch语句块(可能还有finally语句块)以及以后的代码。
wait属于Object的成员方法,对象调用wait,需要通过notify、notifyAll唤醒。如果拥有对象锁,线程会释放掉它说持有的所有同步资源。在等待过程,有可能被其他对象调用interrupt()。