在Java中,wait()
和sleep()
是兩個不同的方法,用于不同的場景。
wait()
: wait()
是Object類的方法,是用于線程間的同步和通信。當一個線程執行了一個對象的wait()
方法后,它會釋放該對象的鎖,并進入等待狀態,直到其他線程調用相同對象的notify()
或notifyAll()
方法來喚醒等待的線程。wait()
方法必須在synchronized塊或方法中調用,因為它要求線程擁有該對象的監視器(即鎖)。
sleep()
: sleep()
是Thread類的靜態方法,用于使當前線程暫停執行一段時間。它不會釋放鎖,僅是讓線程進入阻塞狀態,并且不會參與任何線程間的通信。sleep()
方法可以在任何地方調用,不需要擁有特定的鎖。
總結:
wait()
用于線程間的同步和通信,需要在synchronized塊或方法中調用,并釋放鎖;
sleep()
用于暫停當前線程的執行,不會釋放鎖,可以在任何地方調用。