-
sleep是Thread类的方法,wait是Object类的方法;
-
sleep可以在任何地方使用,wait只能在同步方法或同步代码块中使用;
-
wait()会让当前线程释放它持有的锁,并且让出CPU资源,直到其他线程调用此对象的notify()或者notifyAll()方法,当前线程被唤醒,去争夺锁资源,拿到锁资源后,重新进入就绪状态,与其他线程争夺CPU调用资源;sleep()方法不会释放锁,但是会让出CPU资源,其他线程可以利用CPU时间片了,但如果其他线程要获取sleep()拥有的锁才能执行的话,则会因为没有获取锁而继续等待,但是那些没有和sleep()竞争锁的线程,一旦等到CPU时间片即可运行了,sleep()超时后线程会重新进入就绪状态。