中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java怎么實現阻塞隊列

小億
77
2023-11-06 21:06:46
欄目: 編程語言

Java中可以使用BlockingQueue接口來實現阻塞隊列。BlockingQueue接口繼承自Queue接口,提供了阻塞隊列的基本操作方法,并新增了一些阻塞等待的方法。

常用的BlockingQueue的實現類有:

  • ArrayBlockingQueue:基于數組的有界阻塞隊列。
  • LinkedBlockingQueue:基于鏈表的可選有界或無界阻塞隊列。
  • PriorityBlockingQueue:支持優先級排序的無界阻塞隊列。
  • DelayQueue:延遲隊列,元素只有在其指定的延遲時間到期時才能出隊列。
  • SynchronousQueue:容量為0的阻塞隊列,用于線程間直接交換數據。

下面是使用ArrayBlockingQueue實現阻塞隊列的示例代碼:

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

public class BlockingQueueExample {
    public static void main(String[] args) {
        // 創建一個容量為10的阻塞隊列
        BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);

        // 生產者線程
        Thread producer = new Thread(() -> {
            try {
                for (int i = 0; i < 10; i++) {
                    queue.put(i); // 將元素放入隊列
                    System.out.println("Produced: " + i);
                    Thread.sleep(1000);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        // 消費者線程
        Thread consumer = new Thread(() -> {
            try {
                for (int i = 0; i < 10; i++) {
                    int num = queue.take(); // 從隊列中取出元素
                    System.out.println("Consumed: " + num);
                    Thread.sleep(2000);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        // 啟動生產者和消費者線程
        producer.start();
        consumer.start();

        try {
            // 等待生產者和消費者線程執行完畢
            producer.join();
            consumer.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

在上述示例中,生產者線程通過put()方法將元素放入隊列,如果隊列已滿,則會阻塞等待;消費者線程通過take()方法從隊列中取出元素,如果隊列為空,則會阻塞等待。

0
台北县| 保靖县| 淮北市| 武夷山市| 洮南市| 淮安市| 高雄市| 新干县| 德化县| 宜州市| 邵武市| 宜春市| 长丰县| 沙坪坝区| 康定县| 安龙县| 海丰县| 屏南县| 凌海市| 江安县| 泰来县| 亚东县| 敦化市| 竹山县| 陇南市| 郎溪县| 六盘水市| 嘉荫县| 会昌县| 波密县| 黑山县| 枣阳市| 嘉峪关市| 正阳县| 定安县| 阜宁县| 新民市| 安仁县| 沅陵县| 永安市| 阳谷县|