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