首頁 >Java >java教程 >線程間的同步與通信

線程間的同步與通信

Patricia Arquette
Patricia Arquette原創
2024-11-27 07:37:09556瀏覽

附加內容:

執行緒間的同步與通訊
問題: 執行緒在存取共享資料時可能會互相干擾。

解:
同步方法

synchronized void synchronizedMethod() {
    // Código sincronizado
}

同步區塊:

synchronized (this) {
    // Código sincronizado
}

溝通範例:

執行緒之間使用wait()、notify()和notifyAll()進行通訊:

class SharedResource {
    private boolean flag = false;

    synchronized void produce() {
        while (flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Producing...");
        flag = true;
        notify();
    }

    synchronized void consume() {
        while (!flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Consuming...");
        flag = false;
        notify();
    }
}

public class ThreadCommunication {
    public static void main(String[] args) {
        SharedResource resource = new SharedResource();

        Thread producer = new Thread(resource::produce);
        Thread consumer = new Thread(resource::consume);

        producer.start();
        consumer.start();
    }
}

結論

  • Java 中的多執行緒程式設計可讓您建立更有效率的應用程序,尤其是在多核心系統上。
  • 使用同步正確管理對共享資源的存取非常重要。
  • Thread 類別方法和 Runnable 介面是處理多任務的強大工具。

Sincronização e Comunicação entre Threads

以上是線程間的同步與通信的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn