Rumah >Java >javaTutorial >Penyegerakan dan Komunikasi antara Benang

Penyegerakan dan Komunikasi antara Benang

Patricia Arquette
Patricia Arquetteasal
2024-11-27 07:37:09561semak imbas

Kandungan tambahan:

Penyegerakan dan Komunikasi antara Benang
Isu: Benang boleh mengganggu satu sama lain apabila mengakses data kongsi.

Penyelesaian:
Kaedah disegerakkan

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

Blok disegerakkan:

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

Contoh Komunikasi:

Komunikasi antara urutan menggunakan wait(), notify() dan 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();
    }
}

Kesimpulan

  • Pengaturcaraan berbilang benang dalam Java membolehkan anda mencipta aplikasi yang lebih cekap, terutamanya pada sistem berbilang teras.
  • Adalah penting untuk mengurus akses kepada sumber yang dikongsi dengan betul menggunakan penyegerakan.
  • Kaedah kelas Thread dan antara muka Runnable ialah alat yang berkuasa untuk bekerja dengan berbilang tugas.

Sincronização e Comunicação entre Threads

Atas ialah kandungan terperinci Penyegerakan dan Komunikasi antara Benang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn