色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java sleep和wait 阻塞

老白2年前8瀏覽0評論

Java中的sleep和wait是常用的阻塞操作。它們可以讓線程暫停一段時間或等待某個特定條件發(fā)生。

sleep方法可以讓當前線程暫停一段指定的時間。我們可以使用Thread.sleep()方法來調(diào)用,它需要傳入一個long類型的參數(shù),表示暫停的時間,單位是毫秒。

try {
Thread.sleep(1000); //暫停1秒
} catch (InterruptedException e) {
e.printStackTrace();
}

wait方法則比較復(fù)雜,它需要和synchronized關(guān)鍵字一起使用。當一個對象上調(diào)用wait()方法時,它會讓當前線程進入該對象的等待隊列中,并釋放該對象的鎖。當該對象上的某個線程調(diào)用notify()或notifyAll()方法時,等待隊列中的線程將被喚醒,繼續(xù)競爭該對象的鎖。

synchronized(obj) {
while (!condition) { //條件不滿足時
try {
obj.wait(); //阻塞線程并釋放鎖
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

在使用wait時,我們通常會使用while循環(huán)來檢測條件,以避免線程被誤喚醒的情況。而且,我們還需要在wait方法外再套一層synchronized同步塊,以確保在調(diào)用wait之前,該對象的鎖已經(jīng)被獲取。