<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 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

    主站蜘蛛池模板: 国产第一福利精品导航| 久久综合精品国产一区二区三区| 精品无码国产自产拍在线观看蜜| 欧美精品天天操| 在线亚洲精品自拍| 99国产精品国产免费观看| 国产精品久久久亚洲| 亚洲国产精品成人久久蜜臀 | 久久精品国产亚洲Aⅴ蜜臀色欲| 精品一区二区三区高清免费观看 | 亚洲一日韩欧美中文字幕欧美日韩在线精品一区二 | 精品99又大又爽又硬少妇毛片| 久久久久久亚洲精品不卡| 精品亚洲永久免费精品| 亚洲精品乱码久久久久久按摩| 国产cosplay精品视频| 无码精品人妻一区二区三区中| 国产成人精品免费视频大全麻豆| 国产精品无码久久久久| 精品亚洲综合久久中文字幕| 亚洲精品无码成人片久久| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛 | 国产伦精品一区二区三区视频猫咪 | 欧美日韩精品乱国产538| 精品人妻大屁股白浆无码| 另类国产精品一区二区| 成人精品视频成人影院| 久久久精品午夜免费不卡| 国产福利在线观看精品| 精品9E精品视频在线观看| 日韩精品极品视频在线观看免费| 99久久精品免费看国产| 国产精品久久自在自线观看| 精品国产精品国产偷麻豆| 日韩国产成人精品视频| 亚洲高清专区日韩精品| 亚洲色精品aⅴ一区区三区| 在线亚洲精品福利网址导航| 亚洲精品国产V片在线观看 | 久久精品中文字幕一区| 国产乱人伦偷精品视频免观看 |