Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Java ArrayBlockingQueue: Panduan Lanjutan Antrian Pemblokiran dan Operasi Thread-Safe

Java ArrayBlockingQueue

Jelajahi Java ArrayBlockingQueue – pelajari cara membuat, memanipulasi, dan menggunakan antrian pemblokiran ukuran tetap secara thread-safe dengan contoh yang jelas.

Kelas ArrayBlockingQueue dalam Java Collections Framework menyediakan antrian thread-safe yang dibatasi dan didukung oleh array. Ia mengimplementasikan antarmuka BlockingQueue, memungkinkan produser dan konsumen untuk berkoordinasi melalui operasi pemblokiran.

Java ArrayBlockingQueue: Panduan Lanjutan Antrian Pemblokiran dan Operasi Thread-Safe


Membuat ArrayBlockingQueue

Impor java.util.concurrent.ArrayBlockingQueue dan buat instance dengan kapasitas tetap:

ArrayBlockingQueue<Type> queue = new ArrayBlockingQueue<>(capacity);

Di mana Type adalah tipe elemen dan capacity adalah ukuran maksimum.

Catatan: Kapasitas wajib diisi; ia menentukan ukuran terbatas queue.


Metode Inti ArrayBlockingQueue

Kelas ini mengimplementasikan semua metode dari BlockingQueue untuk menyisipkan, mengakses, dan menghapus elemen. Berikut adalah operasi yang paling sering digunakan.

Menyisipkan Elemen

ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5); animals.add("Dog"); animals.offer("Cat"); animals.offer("Horse"); System.out.println("ArrayBlockingQueue: " + animals);

Output: ArrayBlockingQueue: [Dog, Cat, Horse]

Mengakses Elemen

String head = animals.peek(); System.out.println("Head element: " + head); Iterator<String> it = animals.iterator(); while (it.hasNext()) { System.out.print(it.next() + ", "); }

Output: Head element: Dog diikuti oleh daftar elemen.

Menghapus Elemen

String removed1 = animals.remove(); String removed2 = animals.poll(); animals.clear(); System.out.println("Updated queue: " + animals);

Output: Updated queue: []


Operasi Pemblokiran: put() dan take()

Metode ini penting untuk pola produser-konsumen. Mereka memblokir hingga operasi dapat dilakukan, memastikan koordinasi thread.

put()

Menyisipkan elemen, menunggu jika queue penuh. Dapat melempar InterruptedException.

try { animals.put("Dog"); animals.put("Cat"); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }

take()

Menghapus dan mengembalikan head, menunggu jika queue kosong. Dapat melempar InterruptedException.

try { String element = animals.take(); System.out.println("Removed: " + element); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }

Metode Kemudahan Tambahan

MetodeDeskripsi
contains(Object o)Mengembalikan true jika queue mengandung elemen yang ditentukan.
size()Mengembalikan jumlah elemen saat ini.
toArray()Mengonversi queue ke array.
toString()Representasi string dari queue.

Mengapa Menggunakan ArrayBlockingQueue?

Karena ia menawarkan:

Saat satu thread memproduksi lebih lambat daripada konsumen, konsumen akan memblokir secara otomatis, menghindari busy-waiting dan memastikan penggunaan CPU yang efisien.


java

  1. Menguasai Operator Java: Tipe, Sintaks, & Contoh Praktis
  2. Komentar Java: Tipe, Penggunaan, dan Best Practices
  3. Menguasai Java Enhanced For Loop: Sintaks, Contoh, dan Best Practices
  4. Menguasai String Java: Pembuatan, Metode, dan Best Practices
  5. Menguasai Antarmuka Java: Konsep, Implementasi, dan Praktik Terbaik
  6. Menguasai Kelas Dalam Anonim Java: Definisi, Sintaks, dan Contoh Praktis
  7. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  8. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis
  9. Pernyataan Java: Panduan Praktis untuk Mendeteksi Bug dan Memastikan Keandalan Kode
  10. Memahami Java Vector: Penggunaan, Fitur, dan Perbandingan dengan ArrayList