共同点:

1、在多线程环境下,都可以指定阻塞的毫秒数,并返回。

2、二者都可以通过Interrupt()方法打断现成的暂停状态,从而使线程立即抛出InterruptedException。

不同点:

1、wait()是Object类的方法,而sleep()是在Thread类中方法。

2、每一个对象都有一个锁来控制同步方法,Synchronized关键字可以和对象的锁交互,来实现同步。

sleep()方法没有释放锁,而wait()方法释放了锁,使得其他线程可以同步控制块或者方法。

3、wait()方法只能在同步控制代码块或者方法中使用,sleep()可以在任何地方使用。

4、sleep() 方法必须捕获异常。wait()不需要捕获异常。