wait()方法使线程释放了对象锁,使线程进入等待区,
notify() ,notifyAll()唤醒一个或多个在等待区的线程,使它们加入对象锁的争夺,
因为以上三个方法都涉及到了对对象锁的操作,所以都属于Object的方法,
而sleep()是线程上的方法,调用此方法会使线程暂停一段时间,但不释放对象锁.
综上所述,
wait()来自于Object类,sleep()来自于Thread类,
执行wait()方法会释放对象锁,而sleep()不会
wait(),notify(),notifyall()必须在synchronized方法或代码块中执行,而sleep()可以在任何地方使用
wait()方法不需要捕获异常,而sleep()方法必须捕获异常 |