Rumah  >  Artikel  >  Java  >  Bagaimana untuk melaksanakan model pengeluar-pengguna menggunakan baris gilir menyekat di Jawa?

Bagaimana untuk melaksanakan model pengeluar-pengguna menggunakan baris gilir menyekat di Jawa?

王林
王林asal
2024-05-03 15:03:01268semak imbas

Baris gilir menyekat di Java digunakan untuk melaksanakan model pengeluar-pengguna: urutan pengeluar menambah data pada baris gilir dan urutan pengguna membaca data daripada baris gilir. Apabila baris gilir penuh, pengeluar menyekat sehingga ruang tersedia; apabila baris gilir kosong, pengguna menyekat sehingga ada data untuk dibaca. Kes praktikal: isu konkurensi seperti sistem caching, baris gilir mesej dan pemprosesan saluran paip.

如何在 Java 中使用阻塞队列实现生产者消费者模型?

Gunakan baris gilir menyekat untuk melaksanakan model pengeluar-pengguna dalam Java

Baris gilir menyekat ialah struktur data selamat benang yang boleh membantu kami mencapai penyegerakan antara pengeluar dan pengguna. Urutan pengeluar menambah data pada baris gilir, manakala urutan pengguna membaca data daripada baris gilir. Jika baris gilir penuh, pengeluar menyekat sehingga ruang tersedia. Jika baris gilir kosong, pengguna menyekat sehingga ada data untuk dibaca.

Contoh kod:

Producer.java

import java.util.concurrent.BlockingQueue;

public class Producer implements Runnable {

    private BlockingQueue<Integer> queue;

    public Producer(BlockingQueue<Integer> queue) {
        this.queue = queue;
    }

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            try {
                queue.put(i);
                System.out.println("Produced: " + i);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

Consumer.java

import java.util.concurrent.BlockingQueue;

public class Consumer implements Runnable {

    private BlockingQueue<Integer> queue;

    public Consumer(BlockingQueue<Integer> queue) {
        this.queue = queue;
    }

    @Override
    public void run() {
        while (true) {
            try {
                Integer item = queue.take();
                System.out.println("Consumed: " + item);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

Main.java

ractical

rreee: Model ini boleh Digunakan untuk menyelesaikan pelbagai konkurensi masalah, Contohnya:

Dalam sistem cache, benang pengeluar menjana data dan benang pengguna menggunakan data.
  • Dalam sistem baris gilir mesej, urutan pengeluar menerbitkan mesej dan urutan pengguna memproses mesej.
  • Dalam pemprosesan saluran paip, benang pengeluar menjana data perantaraan, manakala benang pengguna memproses data perantaraan dan menjana hasil akhir.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan model pengeluar-pengguna menggunakan baris gilir menyekat di Jawa?. 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