欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java thread wait和sleep

錢諍諍1年前8瀏覽0評論

Java中的線程是如何控制自己的行為的呢?我們知道,在Java中,線程有兩種控制方式,分別是wait()和sleep()。

public static synchronized void wait() throws InterruptedException
public static native void sleep(long millis) throws InterruptedException

wait()方法和sleep()方法都是用來控制線程的執行流程的,但是它們的功能不太一樣。

wait()方法是讓當前線程進入等待狀態,直到其它線程調用notify()或notifyAll()方法喚醒它。wait()方法既可以在synchronized方法內調用,也可以在synchronized塊內調用。調用wait()方法后,當前線程將釋放鎖,進入等待狀態,直到其它線程調用notify()或notifyAll()方法喚醒它,或者時間到期。

synchronized (obj) {
while (condition) {
obj.wait();
}
// ...
}

sleep()方法是讓當前線程進入休眠狀態,休眠時間結束后會重新進入就緒狀態,等待系統重新調度。sleep()方法只能在synchronized方法內或synchronized塊內調用,否則會拋出IllegalMonitorStateException異常。

synchronized (obj) {
while (condition) {
try {
obj.wait();
} catch (InterruptedException e) {
// ...
}
}
// ...
}

總之,wait()和sleep()方法雖然都是控制線程的執行流程的方法,但是它們的作用不同。wait()方法讓線程進入等待狀態,等待其它線程喚醒;sleep()方法讓線程進入休眠狀態,等待時間到期后重新進入就緒狀態。開發者需要根據具體的需求,在使用兩種方法時選擇恰當的方式,才能實現適合自己需求的程序。