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?
- Jenis BlockingQueue
- Kaedah dalam Antaramuka BlockingQueue
- Antaramuka BlockingQueue di Java Contoh: Perkhidmatan
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.
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.