sleep就是正在執行的線程主動讓出cpu讓其餘線程執行,等到sleep()指定的時間以後,cpu會回到這個線程上繼續執行。若是當前線程進入了同步鎖,sleep方法並不會釋放同步鎖,這樣會致使其餘被同步鎖擋住的線程也沒法執行。線程
wait()是指一個已經進入了同步鎖的線程,讓本身暫時讓出同步鎖,讓其餘線程打獲得此同步鎖繼續運行,只有線程調用了notify方法,纔會解除調用了wait()方法的線程。讓線程去競爭同步鎖繼續向下執行。code
大概就是說:sleep()睡覺,睡到必定時間後本身就會醒了。若是它睡覺以前拿着鑰匙的,它不會丟給別人,會等到睡醒了以後繼續用,後面須要鑰匙的人就不能進去有鎖的房間。同步
wait() 等待。等待的時候會把鑰匙丟出去,讓須要這把鑰匙的人拿着這個鑰匙繼續向下執行,可是須要有人去叫醒他,就是調用nofity() 方法,纔會解除這個線程的等待,繼續行下執行。