中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂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

      主站蜘蛛池模板: 日本女优中文字幕看片| 国产自在自线午夜精品视频在| 国产精品亚洲美女av网站| 亚洲人成伊人成综合网中文| 日本香蕉久久一区二区视频| 宅宅午夜无码一区二区三区| 久久99精品国产一区二区三区| 亚洲乱码精品中文字幕| 欧美成人精品福利在线视频 | 沙田区| 安塞县| 国产福利一区二区三区视频在线看 | 一区二区三区午夜视频在线观看| 2017天天爽夜夜爽精品视频| 中文字幕日韩人妻在线| 精品亚洲一区二区99| 人妻少妇看A偷人无码电影| 久久久99久久久国产自输拍| 国产三级国产精品三级在专区 | 乡城县| 精品一区二区三区久久久| 日韩熟女一区二区三区| 玩弄人妻少妇一区二区| 扶绥县| 日本一区二区最新在线观看| 久久91精品国产91久久麻豆| 嘉定区| 亚洲AV小说在线观看| 久久久中文字幕人妻一区| 金川县| AV无码系列一区二区三区| 汉中市| 看全色黄大色大片免看的| 荆门市| 一本大道在线一久道一区二区| 婷婷色在线视频中文字幕| av一区二区不卡久久| 国产精品久久成人午夜一区二区| 亚洲成熟丰满熟妇高潮XXXXX| 亚洲午夜久久久久中文字幕久 | av观看一区二区三区|