91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java mutex的等待/通知機制

小樊
83
2024-08-06 15:28:16
欄目: 編程語言

在Java中,Mutex通常使用synchronized關鍵字或者Lock接口來實現。當一個線程獲取了Mutex的鎖之后,其他線程就會被阻塞在獲取鎖的地方,直到該線程釋放了鎖。

等待/通知機制可以通過wait()和notify()/notifyAll()方法來實現。當一個線程調用wait()方法時,它會釋放鎖并進入等待狀態。而當另一個線程調用notify()/notifyAll()方法時,等待的線程會被喚醒并且可以重新競爭鎖。

下面是一個簡單的示例代碼,演示了Java中的Mutex的等待/通知機制:

public class MutexExample {
    private boolean isLocked = false;

    public synchronized void lock() throws InterruptedException {
        while (isLocked) {
            wait();
        }
        isLocked = true;
    }

    public synchronized void unlock() {
        isLocked = false;
        notify();
    }

    public static void main(String[] args) {
        MutexExample mutex = new MutexExample();

        Thread thread1 = new Thread(() -> {
            try {
                mutex.lock();
                System.out.println("Thread 1 has acquired the lock");
                Thread.sleep(2000);
                mutex.unlock();
                System.out.println("Thread 1 has released the lock");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        Thread thread2 = new Thread(() -> {
            try {
                mutex.lock();
                System.out.println("Thread 2 has acquired the lock");
                mutex.unlock();
                System.out.println("Thread 2 has released the lock");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        thread1.start();
        thread2.start();
    }
}

在這個例子中,MutexExample類表示一個簡單的Mutex,其中lock()方法用于獲取鎖,unlock()方法用于釋放鎖。在main()方法中,創建了兩個線程分別獲取和釋放Mutex的鎖。可以看到,當一個線程獲取了鎖之后,另一個線程會被阻塞直到第一個線程釋放了鎖。

0
屏东市| 蓬莱市| 诏安县| 怀柔区| 合江县| 米泉市| 镇巴县| 时尚| 马边| 酉阳| 温泉县| 康马县| 绍兴县| 嵊泗县| 阿图什市| 双牌县| 库伦旗| 巴南区| 肇州县| 阳城县| 兴义市| 集贤县| 济源市| 西藏| 沂源县| 自贡市| 白银市| 招远市| 绥宁县| 隆昌县| 松潘县| 宁强县| 周宁县| 汤原县| 民和| 偏关县| 黄浦区| 溧水县| 大石桥市| 溧阳市| 兴山县|