两者最主要的区别在于:Thread.sleep() 方法没有释放锁,而 Object.wait() 方法释放了锁
任何线程都可以调用sleep()方法进入休眠状态,但是只有获取synchronized隐式锁的线程,才能调用wait()方法
Wait 通常被用于线程间交互/通信,通过调用notify()和notifyAll()让线程状态转变为RUNNABLE。sleep 通常被用于暂停执行,执行完成后,线程会自动苏醒
sleep()方法属于Thread类的静态方法,作用于当前线程;而wait()方法是Object类的实例方 法,作用于对象本身。
执行sleep()方法后,可以通过超时或者调用interrupt()方法唤醒休眠中的线程;执行wait() 方法后,通过调用notify()或notifyAll()方法唤醒等待线程。