<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Java中Queue和BlockingQueue的區(qū)別

    時間:2024-07-23 02:57:25 SUN認(rèn)證 我要投稿
    • 相關(guān)推薦

    關(guān)于Java中Queue和BlockingQueue的區(qū)別

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

      1.BlockingQueue:支持兩個附加操作的 Queue,這兩個操作是:檢索元素時等待隊(duì)列變?yōu)榉强眨约按鎯υ貢r等待空間變得可用。

      2.BlockingQueue 不接受 null 元素。

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

      4.BlockingQueue 實(shí)現(xiàn)是線程安全的。Queue不是線程安全的。因此可以將Blockingqueue用于用于生產(chǎn)者-使用者隊(duì)列。

      根據(jù)Api修改的一個例子,大家可以修改自己體驗(yàn)BlockingQueue的使用

      package test;

      import java.util.concurrent.ArrayBlockingQueue;

      import java.util.concurrent.BlockingQueue;

      /**

      * 生產(chǎn)者

      */

      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("生產(chǎn)后:"+queue.peek());

      }

      } catch (InterruptedException ex) {

      ex.printStackTrace();

      }

      }

      Character produce() {

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

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

      return c;

      }

      }

      /**

      * 消費(fèi)者

      */

      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("消費(fèi):" + c);

      }

      }

      /**

      * 一個生產(chǎn)者、兩個消費(fèi)者

      *

      */

      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的區(qū)別】相關(guān)文章:

    JAVA和.NET開發(fā)過程中的區(qū)別10-25

    Java Web開發(fā)和J2EE的區(qū)別07-07

    PHP中MySQL、MySQLi和PDO的用法和區(qū)別07-01

    linux命令中su和sudo區(qū)別08-10

    跆拳道中WTF和ITF的區(qū)別05-21

    在Java中執(zhí)行JavaScript代碼07-14

    Java中的動態(tài)代碼編程06-27

    速錄和打字的區(qū)別10-08

    爽膚水和柔膚水的區(qū)別05-07

    赤豆和紅豆的區(qū)別07-26

    主站蜘蛛池模板: 色国产精品一区在线观看| 久久久久女人精品毛片| 亚洲精品专区在线观看| 99久久婷婷国产综合精品草原| 亚洲欧洲国产精品香蕉网| 国产精品热久久无码av| 精品九九久久国内精品| 久久国产乱子伦免费精品| 国产欧美亚洲精品A| 国模和精品嫩模私拍视频| 精品国产品香蕉在线观看75| 久久久久亚洲精品无码蜜桃| 欧美亚洲另类精品第一页| 免费精品99久久国产综合精品| 国产69精品久久久久9999| 精品一区二区三区自拍图片区| 老司机午夜网站国内精品久久久久久久久 | 久久国产成人精品麻豆| 久久九九精品99国产精品| 亚洲中文字幕久久精品无码APP | 亚洲日韩欧美制服精品二区| 久久精品中文字幕第23页| 国产精品午夜无码AV天美传媒| 无码精品一区二区三区免费视频| 国产精品久久久久影视不卡| 国产成人久久精品区一区二区| 国产精品高清一区二区三区| 国产成人精品无码播放| 国产精品无码AV一区二区三区 | 日韩在线精品一二三区| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛 | 精品国产污污免费网站入口在线| Xx性欧美肥妇精品久久久久久| 午夜精品美女自拍福到在线| 亚洲精品私拍国产福利在线| 久久精品国产精品青草| 在线精品视频播放| 国产精品粉嫩美女在线观看| 国产精品禁18久久久夂久| 精品亚洲一区二区三区在线播放| 国产午夜精品久久久久九九电影 |