Cara Melaksanakan Interface BlockingQueue di Java



Artikel ini akan memberi anda pengetahuan terperinci dan komprehensif tentang bagaimana menerapkan Interface BlockingQueue di Java.

Antrian adalah aspek penting dari mana-mana bahasa Pengaturcaraan. Terutama jika kita bercakap mengenai . Dalam artikel ini, kita akan membincangkan Antarmuka BlockingQueue di Java dalam urutan berikut:

Apa itu Interface BlockingQueue di Java?

Antarmuka BlockingQueue di Java adalah barisan yang menyekat ketika anda cuba mengasingkannya dan barisan kosong, atau jika anda cuba memasukkan item ke sana dan barisan sudah penuh. Benang yang cuba disekat dari barisan kosong disekat sehingga beberapa utas lain memasukkan item ke dalam barisan. Benang yang cuba memasukkan item dalam barisan penuh disekat sehingga beberapa utas lain memberi ruang dalam barisan, sama ada dengan mengasingkan satu atau lebih item atau membersihkan barisan sepenuhnya.





barisan keutamaan dalam c ++

Antaramuka BlockingQueue di Java tidak diterimabatalnilai dan lontaranNullPointerExceptionjika anda cuba menyimpan nilai nol dalam barisan.Pelaksanaan Java BlockingQueue adalah benang-selamat . Semua kaedah beratur bersifat atom dan menggunakan kunci dalaman atau bentuk kawalan serentak lain.



Rajah Kelas Antrian Java

Antara muka Java Queue memperluas antara muka Koleksi. Antaramuka Koleksi memperluas antara muka Iterable. Beberapa kelas pelaksanaan Queue yang sering digunakan adalah LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,dll .. AbstractQueue menyediakan rangka pelaksanaan antara muka Queue untuk mengurangkan usaha dalam melaksanakan Queue.

Jenis BlockingQueue

The BlockingQueue adalah dua jenis:



  • Baris Tidak Terhad: Kapasiti barisan penyekat akan ditetapkan ke Integer.MAX_VALUE. Sekiranya antrian blokir tidak terikat, barisan tidak akan pernah menyekat kerana boleh berkembang menjadi ukuran yang sangat besar. apabila anda menambah elemen, saiznya bertambah.

Sintaks:
BlockingQueue blocking queue = LinkedBlockingDeque baru ()

  • Baris Terhad: Jenis giliran kedua adalah barisan yang dibatasi. Sekiranya terdapat barisan yang dibatasi, anda boleh membuat barisan dengan melewati kapasiti barisan dalam pembinaan antrian:
    Sintaks:
    // Membuat Blok Beratur dengan kapasiti 5

BlockingQueue blocking queue = LinkedBlockingDeque baru (5)

Kaedah dalam Antaramuka BlockingQueue

Ubah Jenis Sintaks Kaedah Digunakan untuk Penerangan
boolean tambah (E dan) Penyisipan

Memasukkan elemen yang ditentukan ke dalam barisan ini jika mungkin untuk melakukannya dengan segera tanpa melanggar batasan kapasiti, kembali benar setelah berjaya dan melemparkan IllegalStateException jika tidak ada ruang pada masa ini.

boolean mengandungi (Objek o) Kaji

Kembali benar jika barisan ini mengandungi elemen yang ditentukan.

int drainTo (Koleksi c) Mengambil atau Membuang

Membuang semua elemen yang ada dari barisan ini dan menambahkannya ke koleksi yang diberikan.

int drainTo (Koleksi c, int maxElements) Mengambil atau Membuang

Menghilangkan paling banyak jumlah elemen yang ada dari barisan ini dan menambahkannya ke koleksi yang diberikan.

boolean tawaran (E dan) Penyisipan

Memasukkan elemen yang ditentukan ke dalam barisan ini jika mungkin untuk melakukannya dengan segera tanpa melanggar batasan kapasiti, kembali benar apabila berjaya dan palsu jika tidak ada ruang yang ada saat ini.

boolean tawaran (E e, jangka masa panjang, unit TimeUnit) Penyisipan

Memasukkan elemen yang ditentukan ke dalam barisan ini, menunggu masa menunggu yang ditentukan jika perlu agar ruang tersedia.

ADALAH tinjauan pendapat (jangka masa panjang, unit TimeUnit) Mengambil atau Membuang

Mengambil dan mengeluarkan kepala barisan ini, menunggu masa menunggu yang ditentukan jika perlu untuk elemen tersedia.

batal meletakkan (E e) Penyisipan

Memasukkan elemen yang ditentukan ke dalam barisan ini, menunggu jika perlu ruang tersedia.

int kapasiti selebihnya () Kaji

Mengembalikan bilangan elemen tambahan yang dapat diterima oleh barisan ini (jika tidak ada kekangan memori atau sumber) yang diterima tanpa menyekat, atau Integer.MAX_VALUE jika tidak ada had intrinsik.

pembelajaran mendalam vs pembelajaran mesin vs pengecaman corak
boolean keluarkan (Objek o) + Mengambil atau Membuang

Mengeluarkan satu contoh elemen yang ditentukan dari barisan ini,sekiranya ada.

ADALAH ambil () Mengambil atau Membuang

Mengambil dan mengeluarkan kepala barisan ini, menunggu jika perlu sehingga elemen tersedia.

Antaramuka BlockingQueue di Java Contoh: Perkhidmatan

pakej com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue kelas awam ProducerConsumerService {public static void main (String [] args) {// Membuat BlockingQueue of size 10 BlockingQueue queue = baru 10) Pengeluar pengeluar = Pengeluar baru (barisan) Pengguna pengguna = Pengguna baru (barisan) // memulakan pengeluar untuk menghasilkan mesej dalam barisan Thread baru (pengeluar). Mulakan () // memulakan pengguna untuk menggunakan mesej dari barisan Thread baru (pengguna) .start () System.out.println ('Pengeluar dan Pengguna telah dimulakan')}}

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

Lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk pelajar dan profesional yang ingin menjadi Pembangun Java. Kursus ini dirancang untuk memberi Anda awal dalam pengaturcaraan Java dan melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.

Ada soalan untuk kami? Sila sebutkan di bahagian komen blog 'BlockingQueue Interface in Java' ini dan kami akan menghubungi anda secepat mungkin.