Java中的wait和sleep都是用來控制線程的方法,但是它們的實現(xiàn)和用途卻有所不同。
wait方法是Object類的一個實例方法,在synchronized代碼塊中調(diào)用,它會使當前線程進入等待狀態(tài),并釋放它所持有的鎖,直到其他線程通過notify或notifyAll方法喚醒它。
public synchronized void doSomething() { while (condition) { wait(); // 當條件滿足時,其他線程調(diào)用notify或notifyAll方法喚醒當前線程繼續(xù)運行 } // 執(zhí)行其他代碼 }
sleep方法是Thread類的一個靜態(tài)方法,它會使當前線程進入休眠狀態(tài),不會釋放鎖。sleep方法通常用于控制線程執(zhí)行時間的間隔。
try { // 線程進入休眠狀態(tài) Thread.sleep(1000); // 線程休眠1秒鐘 } catch (InterruptedException e) { e.printStackTrace(); }
總的來說,wait方法是用于線程之間的協(xié)調(diào)與通信,而sleep方法是用于控制線程執(zhí)行時間的間隔。