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

java的wait和notify

劉柏宏1年前6瀏覽0評論

Java中的Wait和Notify是實現線程間協作的兩個重要方法。當一個線程需要等待另一個線程完成一些操作,或者等待一些資源才能繼續執行時,就需要使用Wait和Notify。

Object.wait()

wait()方法使一個線程處于等待狀態,直到另一個線程調用該對象的notify()或notifyAll()方法喚醒它。wait()方法只能在同步方法或同步代碼塊中使用。

Object.notify()
Object.notifyAll()

notify()和notifyAll()方法都是用來喚醒因調用wait()方法而處于等待狀態的線程。notify()方法會隨機喚醒一個等待線程,而notifyAll()方法會喚醒所有等待線程。notify()和notifyAll()方法也只能在同步方法或同步代碼塊中使用。

下面是一個使用wait()和notify()實現線程間通信的例子:

public class WaitNotifyExample {
public static void main(String[] args) {
final Object lock = new Object(); // 定義鎖對象
ThreadA threadA = new ThreadA(lock); // 創建線程A
ThreadB threadB = new ThreadB(lock); // 創建線程B
threadA.start(); // 啟動線程A
threadB.start(); // 啟動線程B
}
}
class ThreadA extends Thread {
private final Object lock;
public ThreadA(Object lock) {
this.lock = lock;
}
public void run() {
synchronized (lock) {
System.out.println("ThreadA開始等待");
try {
lock.wait(); // 等待ThreadB喚醒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("ThreadA已被喚醒");
}
}
}
class ThreadB extends Thread {
private final Object lock;
public ThreadB(Object lock) {
this.lock = lock;
}
public void run() {
synchronized (lock) {
System.out.println("ThreadB開始喚醒");
lock.notify(); // 喚醒ThreadA
System.out.println("ThreadB已喚醒一個線程");
}
}
}

在上面的代碼中,ThreadA線程在同步代碼塊中調用了wait()方法,進入等待狀態。ThreadB線程在同步代碼塊中調用了notify()方法,喚醒了處于等待狀態的ThreadA線程。