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.
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 BlockingQueuequeue; public Producer(BlockingQueue 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 BlockingQueuequeue; public Consumer(BlockingQueue 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
racticalrreee: Model ini boleh Digunakan untuk menyelesaikan pelbagai konkurensi masalah, Contohnya:
Dalam sistem cache, benang pengeluar menjana data dan benang pengguna menggunakan data.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!