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

java park和wait

張吉惟1年前7瀏覽0評論

Java中的Park和Wait都是線程同步的機制,它們都能夠暫停線程的執行,等待某些條件的滿足。但是,它們之間也存在著一些區別。

public class ParkExample {
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(() ->{
System.out.println("Thread1 has started.");
LockSupport.park();//阻塞當前線程
System.out.println("Thread1 has ended.");
});
t1.start();
Thread.sleep(1000);
System.out.println("Main thread is unparking thread1");
LockSupport.unpark(t1);//喚醒t1
}
}

Park()函數可以暫停一個線程的執行,并使其進入waiting狀態,等待其他線程喚醒它。線程進入waiting狀態后不會占用CPU時間片,因此可以減少CPU的占用率。

public class WaitExample {
public static void main(String[] args) {
Object lock = new Object();
Thread t1 = new Thread(() ->{
synchronized (lock) {
try {
System.out.println("Thread1 has started.");
lock.wait();//等待喚醒
System.out.println("Thread1 has ended.");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
t1.start();
Thread.sleep(1000);
synchronized (lock) {
lock.notifyAll();//通知所有等待線程
}
}
}

Wait()方法也可以暫停一個線程的運行,不過它將釋放對象鎖,讓其他線程可以在該對象上wait(),并且只有通過notify()、notifyAll()方法或被其他線程interrupt()操作才能喚醒等待線程。

總的來說,Park更適合用于多線程間的協調;而wait則更適合用于線程間的通信。