Bagaimana Menerapkan Antarmuka BlockingQueue di Java



Artikel ini akan memberi Anda pengetahuan terperinci dan komprehensif tentang cara mengimplementasikan Antarmuka BlockingQueue di Java.

Antrian adalah aspek penting dari setiap bahasa Pemrograman. Apalagi jika kita bicarakan . Pada artikel ini, kita akan membahas Antarmuka BlockingQueue di Java dengan urutan sebagai berikut:

Apa itu BlockingQueue Interface di Java?

Antarmuka BlockingQueue di Java adalah antrean yang memblokir saat Anda mencoba melakukan dequeue darinya dan antrean itu kosong, atau jika Anda mencoba memasukkan item ke antrean dan antrean tersebut sudah penuh. Sebuah utas mencoba untuk melakukan dequeue dari antrian kosong diblokir sampai beberapa thread lain memasukkan item ke dalam antrian. Utas yang mencoba mengantrekan item dalam antrean penuh diblokir hingga utas lain membuat ruang dalam antrean, baik dengan membatalkan satu atau beberapa item atau menghapus antrean sepenuhnya.





antrian prioritas di c ++

BlockingQueue Interface di Java tidak menerimabatalnilai dan lemparanNullPointerExceptionjika Anda mencoba untuk menyimpan nilai null dalam antrian.Implementasi Java BlockingQueue adalah benang aman . Semua metode antrian bersifat atomic dan menggunakan kunci internal atau bentuk kontrol konkurensi lainnya.



Diagram Kelas Antrian Java

Antarmuka Antrean Java memperluas antarmuka Koleksi. Antarmuka Collection memperluas antarmuka Iterable. Beberapa kelas implementasi Antrian yang sering digunakan adalah LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,dll. AbstractQueue menyediakan implementasi kerangka antarmuka Queue untuk mengurangi upaya dalam mengimplementasikan Queue.

Jenis BlockingQueue

BlockingQueue adalah dua jenis:



  • Antrian Tak Berbatas: Kapasitas antrian pemblokiran akan disetel ke Integer.MAX_VALUE. Dalam kasus antrean pemblokiran tak terbatas, antrean tidak akan pernah diblokir karena dapat bertambah menjadi ukuran yang sangat besar. ketika Anda menambahkan elemen, ukurannya bertambah.

Sintaksis:
BlockingQueue memblokir antrian = baru LinkedBlockingDeque ()

  • Antrian Terikat: Jenis antrian kedua adalah antrian berbatas. Dalam kasus antrian terbatas, Anda dapat membuat antrian melewati kapasitas antrian dalam konstruktor antrian:
    Sintaksis:
    // Membuat Antrian Pemblokiran dengan kapasitas 5

BlockingQueue blocking queue = new LinkedBlockingDeque (5)

Metode di BlockingQueue Interface

Ubah Jenis Metode Sintaks Digunakan untuk Deskripsi
boolean tambahkan (E dan) Insersi

Menyisipkan elemen yang ditentukan ke dalam antrean ini jika dimungkinkan untuk melakukannya segera tanpa melanggar batasan kapasitas, mengembalikan nilai true setelah berhasil dan menampilkan IllegalStateException jika tidak ada ruang yang tersedia saat ini.

boolean berisi (Objek o) Memeriksa

Mengembalikan nilai benar jika antrian ini berisi elemen yang ditentukan.

int drainTo (Koleksi c) Mengambil atau Menghapus

Menghapus semua elemen yang tersedia dari antrian ini dan menambahkannya ke koleksi yang diberikan.

int drainTo (Collection c, int maxElements) Mengambil atau Menghapus

Menghapus maksimal sejumlah elemen yang tersedia dari antrean ini dan menambahkannya ke koleksi yang diberikan.

boolean penawaran (E dan) Insersi

Menyisipkan elemen yang ditentukan ke dalam antrian ini jika memungkinkan untuk melakukannya segera tanpa melanggar batasan kapasitas, mengembalikan nilai true setelah berhasil dan false jika tidak ada ruang yang tersedia saat ini.

boolean penawaran (E e, long timeout, unit TimeUnit) Insersi

Menyisipkan elemen yang ditentukan ke dalam antrian ini, menunggu hingga waktu tunggu yang ditentukan jika perlu agar ruang tersedia.

cara menggunakan replace di java
AKU S polling (waktu tunggu lama, unit TimeUnit) Mengambil atau Menghapus

Mengambil dan menghapus kepala antrean ini, menunggu hingga waktu tunggu yang ditentukan jika perlu agar elemen tersedia.

kosong put (E e) Insersi

Menyisipkan elemen yang ditentukan ke dalam antrian ini, menunggu jika perlu sampai ruang tersedia.

int kapasitas yang tersisa () Memeriksa

Mengembalikan jumlah elemen tambahan yang idealnya dapat diterima antrean ini (jika tidak ada batasan memori atau sumber daya) tanpa pemblokiran, atau Integer.MAX_VALUE jika tidak ada batas intrinsik.

boolean hapus (Objek o) + Mengambil atau Menghapus

Menghapus satu contoh dari elemen yang ditentukan dari antrian ini,jika ada.

AKU S mengambil() Mengambil atau Menghapus

Mengambil dan menghapus kepala antrean ini, menunggu jika perlu hingga elemen tersedia.

BlockingQueue Interface di Java Contoh: Service

paket com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// Membuat BlockingQueue ukuran 10 BlockingQueue queue = new ArrayBlockingQue 10) Producer producer = new Producer (queue) Consumer consumer = new Consumer (queue) // memulai produsen untuk menghasilkan pesan dalam antrian Thread baru (produsen) .start () // memulai konsumen untuk mengkonsumsi pesan dari antrian Thread baru (konsumen) .start () System.out.println ('Produsen dan Konsumen telah dimulai')}}

Dengan ini, kita sampai pada akhir artikel BlockingQueue Interface di Java. Saya harap semua konsep Anda sekarang jelas.

Lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus pelatihan dan sertifikasi Java J2EE dan SOA Edureka dirancang untuk siswa dan profesional yang ingin menjadi Pengembang Java. Kursus ini dirancang untuk memberi Anda permulaan dalam pemrograman Java dan melatih Anda untuk konsep Java inti dan lanjutan bersama dengan berbagai kerangka kerja Java seperti Hibernate & Spring.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar di blog 'BlockingQueue Interface in Java' dan kami akan menghubungi Anda kembali secepatnya.