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

溫馨提示×

notifyall與wait方法如何配合使用

小樊
84
2024-07-04 09:19:29
欄目: 編程語言

notifyAll和wait方法是用來進行線程間通信的。

當一個線程調用wait方法時,它會釋放對象的鎖,并進入等待狀態,直到其他線程調用notifyAll方法來喚醒它。

下面是一個簡單的示例代碼,演示了notifyAll和wait方法的配合使用:

public class Message {
    private String message;

    public synchronized void setMessage(String message) {
        this.message = message;
        notifyAll();
    }

    public synchronized String getMessage() {
        while (message == null) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return message;
    }
}

public class Main {
    public static void main(String[] args) {
        Message message = new Message();

        Runnable sender = () -> {
            message.setMessage("Hello from sender!");
        };

        Runnable receiver = () -> {
            String receivedMessage = message.getMessage();
            System.out.println("Received message: " + receivedMessage);
        };

        Thread senderThread = new Thread(sender);
        Thread receiverThread = new Thread(receiver);

        senderThread.start();
        receiverThread.start();
    }
}

在上面的示例中,Message類有一個消息字段和setMessage、getMessage方法。sender線程通過調用setMessage方法來設置消息,receiver線程通過調用getMessage方法來獲取消息。當receiver線程調用getMessage方法時,如果消息字段為null,它會調用wait方法進入等待狀態,直到sender線程調用setMessage方法設置消息并調用notifyAll方法來喚醒receiver線程。

在實際應用中,notifyAll和wait方法通常會和synchronized關鍵字一起使用,以確保線程安全。此外,notifyAll方法會喚醒所有等待的線程,而不是喚醒一個特定的線程。

0
双辽市| 武宣县| 盘锦市| 甘谷县| 耒阳市| 临湘市| 句容市| 灌云县| 大厂| 射洪县| 宣威市| 平远县| 宝清县| 西乌| 桐乡市| 奎屯市| 焦作市| 凤山市| 渭南市| 东乌珠穆沁旗| 夹江县| 漾濞| 龙井市| 彭阳县| 六安市| 万安县| 彭州市| 延川县| 洛南县| 类乌齐县| 庄浪县| 自贡市| 上林县| 广德县| 新密市| 永康市| 赤城县| 宁强县| 贺州市| 友谊县| 宁南县|