sleep是指正在执行的线程主动让出cpu给其他线程,在sleep时间结束后,cpu回到该线程继续执行。如果该线程在sleep之前已经获得了同步锁,在sleep期间,不会释放同步锁。
wait是指已经获得了同步锁的线程,暂时让出同步锁给其他线程,直到调用了notify方法,该线程才会再去竞争同步锁。
sleep就是睡觉,睡到一定时间自己就醒了。如果睡前拿着钥匙,则不会给别人,睡醒了继续用。
wait就是等待,在等待期间把钥匙给别人去用,在调用notify方法之后,即有人告诉他不要等了,那么再去和别人抢这把钥匙。