中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Java中Queue和BlockingQueue的區別

      時間:2024-07-23 02:57:25 SUN認證 我要投稿
      • 相關推薦

      關于Java中Queue和BlockingQueue的區別

        隊列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。下面小編準備了關于Java中Queue和BlockingQueue的區別,提供給大家參考!

        1.BlockingQueue:支持兩個附加操作的 Queue,這兩個操作是:檢索元素時等待隊列變為非空,以及存儲元素時等待空間變得可用。

        2.BlockingQueue 不接受 null 元素。

        3.BlockingQueue 可以是限定容量的。

        4.BlockingQueue 實現是線程安全的。Queue不是線程安全的。因此可以將Blockingqueue用于用于生產者-使用者隊列。

        根據Api修改的一個例子,大家可以修改自己體驗BlockingQueue的使用

        package test;

        import java.util.concurrent.ArrayBlockingQueue;

        import java.util.concurrent.BlockingQueue;

        /**

        * 生產者

        */

        class Producer implements Runnable {

        private final BlockingQueue queue;

        Producer(BlockingQueue q) {

        queue = q;

        }

        public void run() {

        try {

        for (int i = 0; i < 3; i++) {

        queue.put(produce());

        System.out.println("生產后:"+queue.peek());

        }

        } catch (InterruptedException ex) {

        ex.printStackTrace();

        }

        }

        Character produce() {

        char c = (char) (Math.random() * 26 + 'A');

        System.out.println("生產前:" + c);

        return c;

        }

        }

        /**

        * 消費者

        */

        class Consumer implements Runnable {

        private final BlockingQueue queue;

        Consumer(BlockingQueue q) {

        queue = q;

        }

        public void run() {

        try {

        while (true) {

        consume(queue.take());

        //Thread.sleep(100);

        }

        } catch (InterruptedException ex) {

        ex.printStackTrace();

        }

        }

        void consume(Character c) {

        System.out.println("消費:" + c);

        }

        }

        /**

        * 一個生產者、兩個消費者

        *

        */

        class Setup {

        public static void main(String[] args) {

        BlockingQueue q = new ArrayBlockingQueue(1);

        Producer p = new Producer(q);

        Consumer c1 = new Consumer(q);

        Consumer c2 = new Consumer(q);

        new Thread(p).start();

        new Thread(c1).start();

        new Thread(c2).start();

        }

        }

        –EOF–

      【Java中Queue和BlockingQueue的區別】相關文章:

      JAVA和.NET開發過程中的區別10-25

      Java Web開發和J2EE的區別07-07

      PHP中MySQL、MySQLi和PDO的用法和區別07-01

      linux命令中su和sudo區別08-10

      跆拳道中WTF和ITF的區別05-21

      在Java中執行JavaScript代碼07-14

      Java中的動態代碼編程06-27

      速錄和打字的區別10-08

      爽膚水和柔膚水的區別05-07

      赤豆和紅豆的區別07-26

      主站蜘蛛池模板: 成年人免费黄色h网| 亚洲av情网站在线观看| 衡山县| 韩国主播av福利一区二区| 人妻少妇被猛烈的进入| 中江县| 亚洲自拍系列在线观看| 国产美女裸身网站免费观看视频| 中文字幕日产人妻久久| 昭平县| 一区二区三区内射视频在线观看| 日本一区二区久久精品亚洲中文无| 亚洲AV无码日韩一区二区乱| 蜜桃视频在线免费观看一区二区| 柞水县| 国产精品一码二码三码在线| 国产免费人成视频在线观看播放| 免费无码又爽又刺激又高潮的视频| 中文熟女av一区二区| 亚洲精品二区在线观看| 久久精品女人天堂av影院| 且末县| 错那县| 辽阳市| 久久久一本精品99久久| 偃师市| 久久99久久99精品免观看女同| 碌曲县| 潮安县| 清水河县| 国产成人一区二区三区久久精品| 常山县| 国产啪精品视频网站免| 青青青伊人色综合久久亚洲综合| 精品一区二区三区在线视频观看| 亚洲午夜久久久久中文字幕久| 国产区二区三区在线观看| 中文字幕人妻av一区二区啪啪 | 成在线人免费视频播放| 久久aⅴ无码av高潮AV喷| 欧美1区二区三区公司|