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

      主站蜘蛛池模板: 皋兰县| 国产国拍亚洲精品永久69| 亚洲午夜看片无码| 麻豆免费观看视频在线观看| 被黑人操的嗷嗷叫视频| 珲春市| 鄯善县| 人妻无码人妻有码不卡| 亚洲婷婷综合色香五月| 天堂av在线最新版在线| 波多野无码AV中文专区| 亚洲情精品中文字幕有码在线| 人妖精品视频在线观看| 亚洲av午夜成人片精品| 在线高清免费不卡视频| 康平县| 沽源县| 97色人阁俺也去人人人人人| 四川省| 东兰县| 镇康县| 白玉县| 昌乐县| 麻城市| 日韩精品国产一区二区| 获嘉县| 沧州市| 对白刺激的老熟女露脸| 亚洲精品一区二区三区av| 少妇久久久被弄到高潮| 国产精品久久久一本精品| 天天中文字幕av天天爽| 日本一区二区三区东京热| 蜜桃视频在线网站免费| 久久av一区二区三区播放| 中文字幕无码高清一区二区三区| 久久国产成人高清精品亚洲| 综合激情中文字幕一区二区| 无码一区二区丝袜| 中文日产幕无线码一区中文| 青青草亚洲在线一区观看|