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

java sleep和wait的區別

錢多多1年前9瀏覽0評論

在Java編程中,很多時候需要使用線程來實現并發操作。在線程的操作中,sleep和wait是兩個非常重要的方法,但它們有各自不同的用途。

public class SleepDemo {
public static void main(String[] args) {
Thread thread = new Thread(() ->{
for (int i = 0; i< 5; i++) {
System.out.println("Sleeping...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
}
}

sleep方法是Thread類中的一個靜態方法,可以使當前線程暫停執行一段時間,以便其他線程有機會執行。sleep方法的參數是毫秒值,也就是線程休眠時間的長度。

public class WaitDemo {
private final Object lock = new Object();
public void waitMethod() {
synchronized (lock) {
System.out.println("Before wait");
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("After wait");
}
}
public static void main(String[] args) {
WaitDemo demo = new WaitDemo();
new Thread(() ->demo.waitMethod()).start();
synchronized (demo.lock) {
demo.lock.notify();
}
}
}

wait方法也是Thread類中的一個方法,它會暫停當前線程的執行,并釋放由該對象鎖保護的對象的所有同步資源。調用wait方法的線程必須擁有調用對象的鎖。線程進入到等待的狀態,直到其他線程調用該對象上的notify或notifyAll方法喚醒該線程。

綜上所述,sleep方法是使當前線程暫停執行一段時間,wait方法會暫停當前線程的執行并釋放對象鎖,等待其他線程的喚醒。