<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            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

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院