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

Antrian Pemblokiran Java

Antrian Pemblokiran Java

Dalam tutorial ini, kita akan belajar tentang antarmuka Java BlockingQueue dan metodenya.

BlockingQueue antarmuka Java Collections framework memperluas Queue antarmuka. Ini memungkinkan operasi apa pun untuk menunggu hingga berhasil dilakukan.

Misalnya, jika kita ingin menghapus sebuah elemen dari antrian kosong, maka antrian pemblokiran memungkinkan operasi penghapusan untuk menunggu sampai antrian berisi beberapa elemen yang akan dihapus.


Kelas yang Menerapkan BlockingQueue

Sejak BlockingQueue adalah antarmuka, kami tidak dapat menyediakan implementasi langsungnya.

Untuk menggunakan fungsi BlockingQueue , kita perlu menggunakan kelas yang mengimplementasikannya.


Bagaimana cara menggunakan antrean pemblokiran?

Kita harus mengimpor java.util.concurrent.BlockingQueue paket untuk menggunakan BlockingQueue .

// Array implementation of BlockingQueue
BlockingQueue<String> animal1 = new ArraryBlockingQueue<>();

// LinkedList implementation of BlockingQueue
BlockingQueue<String> animal2 = new LinkedBlockingQueue<>();

Di sini, kita telah membuat objek animal1 dan animal2 kelas ArrayBlockingQueue dan LinkedBlockingQueue , masing-masing. Objek ini dapat menggunakan fungsi BlockingQueue antarmuka.


Metode Memblokir Antrian

Berdasarkan apakah antrian penuh atau kosong, metode antrian pemblokiran dapat dibagi menjadi 3 kategori:

Metode yang memunculkan pengecualian


Metode yang mengembalikan beberapa nilai

Lebih banyak penawaran() dan poll()

offer() dan poll() metode dapat digunakan dengan timeout. Artinya, kita dapat melewatkan satuan waktu sebagai parameter. Misalnya,

offer(value, 100, milliseconds)

Di sini,

Ini berarti offer() metode akan mencoba memasukkan elemen ke antrian pemblokiran untuk 100 milidetik. Jika elemen tidak dapat dimasukkan dalam 100 milidetik, metode mengembalikan false .

Catatan: Alih-alih milliseconds , kita juga dapat menggunakan satuan waktu berikut:days , hours , minutes , seconds , microseconds dan nanoseconds di offer() dan poll() metode.


Metode yang memblokir operasi

BlockingQueue juga menyediakan metode untuk memblokir operasi dan menunggu apakah antrian penuh atau kosong.

Misalkan, kita ingin memasukkan elemen ke dalam antrian. Jika antrian sudah penuh maka put() metode akan menunggu sampai antrian memiliki ruang untuk menyisipkan elemen.

Demikian pula jika kita ingin menghapus elemen dari antrian. Jika antrian kosong maka take() metode akan menunggu sampai antrian berisi elemen yang akan dihapus.


Implementasi BlockingQueue di ArrayBlockingQueue

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ArrayBlockingQueue;

class Main {

    public static void main(String[] args) {
      // Create a blocking queue using the ArrayBlockingQueue
      BlockingQueue<Integer> numbers = new ArrayBlockingQueue<>(5);

      try {
        // Insert element to blocking queue
        numbers.put(2);
        numbers.put(1);
        numbers.put(3);
        System.out.println("BLockingQueue: " + numbers);

        // Remove Elements from blocking queue
        int removedNumber = numbers.take();
        System.out.println("Removed Number: " + removedNumber);
      }

      catch(Exception e) {
          e.getStackTrace();
      }
    }
}

Keluaran

BlockingQueue: [2, 1, 3]
Removed Element: 2

Untuk mempelajari lebih lanjut tentang ArrayBlockingQueue , kunjungi Java ArrayBlockingQueue.


Mengapa Memblokir Antrian?

Di Jawa, BlockingQueue dianggap sebagai aman untuk thread koleksi. Ini karena dapat membantu dalam operasi multi-threading.

Misalkan satu utas memasukkan elemen ke antrean dan utas lainnya menghapus elemen dari antrean.

Sekarang, jika utas pertama berjalan lebih lambat, maka antrian pemblokiran dapat membuat utas kedua menunggu hingga utas pertama menyelesaikan operasinya.


java

  1. Operator Jawa
  2. Komentar Jawa
  3. Java untuk setiap Loop
  4. String Jawa
  5. Antarmuka Jawa
  6. Kelas Anonim Java
  7. Java mencoba-dengan-sumber daya
  8. Anotasi Jawa
  9. Pernyataan Jawa
  10. Vektor Jawa