亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
赫章县| 曲阜市| 溧水县| 浦北县| 南华县| 观塘区| 高雄市| 疏勒县| 连平县| 全南县| 板桥市| 宜城市| 扎鲁特旗| 邢台县| 清水河县| 大荔县| 英山县| 广南县| 扎囊县| 静乐县| 桐乡市| 济宁市| 泸州市| 青川县| 茂名市| 蒙山县| 诏安县| 新巴尔虎左旗| 神池县| 伊金霍洛旗| 苏州市| 桦川县| 司法| 九龙县| 阿鲁科尔沁旗| 抚州市| 建湖县| 灵丘县| 鹿泉市| 会同县| 古浪县|