黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Java隊列

Java傳輸隊列

傳輸隊列擴展阻塞隊列。

生產者使用 TransferQueue 的 transfer(E element)方法將元素傳遞給消費者。

當生產者調用傳遞(E元素)方法時,它等待直到消費者獲取其元素。 tryTransfer()方法提供了該方法的非阻塞和超時版本。

getWaitingConsumerCount()方法返回等待消費者的數量。

如果有一個等待消費者, hasWaitingConsumer()方法返回true; 否則,返回false。 LinkedTransferQueue 是 TransferQueue 接口的實現類。 它提供了一個無界的 TransferQueue 。

以下代碼顯示如何使用 TransferQueue 。

import java.util.concurrent.LinkedTransferQueue;
import java.util.concurrent.TransferQueue;
import java.util.concurrent.atomic.AtomicInteger;

class TQProducer extends Thread {
  private String name;
  private TransferQueue<Integer> tQueue;
  private AtomicInteger sequence;
  public TQProducer(String name, TransferQueue<Integer> tQueue,
      AtomicInteger sequence) {
    this.name = name;
    this.tQueue = tQueue;
    this.sequence = sequence;
  }

  @Override
  public void run() {
    while (true) {
      try {
        Thread.sleep(4000);
        int nextNum = this.sequence.incrementAndGet();
        if (nextNum % 2 == 0) {
          System.out.format("%s:  Enqueuing: %d%n", name, nextNum);
          tQueue.put(nextNum); // Enqueue
        } else {
          System.out.format("%s: Handing  off: %d%n", name, nextNum);
          System.out.format("%s: has  a  waiting  consumer: %b%n", name,
              tQueue.hasWaitingConsumer());
          tQueue.transfer(nextNum); // A hand off
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}

class TQConsumer extends Thread {
  private final String name;
  private final TransferQueue<Integer> tQueue;

  public TQConsumer(String name, TransferQueue<Integer> tQueue) {
    this.name = name;
    this.tQueue = tQueue;
  }

  @Override
  public void run() {
    while (true) {
      try {
        Thread.sleep(3000);

        int item = tQueue.take();
        System.out.format("%s removed:  %d%n", name, item);

      }
      catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}

public class Main {
  public static void main(String[] args) {
    final TransferQueue<Integer> tQueue = new LinkedTransferQueue<>();
    final AtomicInteger sequence = new AtomicInteger();

    for (int i = 0; i < 5; i++) {
      try {
        tQueue.put(sequence.incrementAndGet());
        System.out.println("Initial queue: " + tQueue);

        new TQProducer("Producer-1", tQueue, sequence).start();
        new TQConsumer("Consumer-1", tQueue).start();

      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }

  }
}

上面的代碼生成以下結果。

全部教程
主站蜘蛛池模板: 三级亚洲 | 成人国产亚洲 | 伊人激情视频 | 婷婷免费高清视频在线观看 | 久久久免费观成人影院 | 在线视频第一页 | 极品成人| 欧美2区| 男女www视频 | 欧美亚洲国产精品久久第一页 | 亚洲欧美一级视频 | 伦理片第一页 | 在线观看视频网站www色 | 99精品视频在线观看免费播放 | 看黄的视频 | 日本一区二区三区不卡在线视频 | 一本大道在线视频 | 国产日韩欧美亚洲精品95 | 天堂在线视频精品 | 99视频精品全部国产盗摄视频 | 日本在线观 | 亚洲色图综合网 | 一级片网 | 国产亚洲新品一区二区 | 一区二区不卡在线 | 国产成人综合一区精品 | 三级黄网 | 日本三级2021| 欧美视频性 | 曰批免费视频播放在线看片 | 欧美第一页在线 | 52精品免费视频国产专区 | x8x8国产精品视频 | 中文字幕日韩有码 | 日韩精品影院 | 天天操天天射天天舔 | 日韩视频在线免费 | 成人一级黄色大片 | 亚洲精品视频导航 | 中文字幕亚洲无线码在线一区 | 成年人网站免费观看 |