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

Java隊(duì)列

Java傳輸隊(duì)列

傳輸隊(duì)列擴(kuò)展阻塞隊(duì)列。

生產(chǎn)者使用 TransferQueue 的 transfer(E element)方法將元素傳遞給消費(fèi)者。

當(dāng)生產(chǎn)者調(diào)用傳遞(E元素)方法時(shí),它等待直到消費(fèi)者獲取其元素。 tryTransfer()方法提供了該方法的非阻塞和超時(shí)版本。

getWaitingConsumerCount()方法返回等待消費(fèi)者的數(shù)量。

如果有一個(gè)等待消費(fèi)者, hasWaitingConsumer()方法返回true; 否則,返回false。 LinkedTransferQueue 是 TransferQueue 接口的實(shí)現(xiàn)類(lèi)。 它提供了一個(gè)無(wú)界的 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();
      }
    }

  }
}

上面的代碼生成以下結(jié)果。

全部教程
主站蜘蛛池模板: 2018精品国产一区二区 | 精品一区二区三区高清免费观看 | 亚洲日本va中文字幕婷婷 | 免费人成在线观看网站 | 成人免费看吃奶视频网站 | 婷婷久久综合九色综合绿巨人 | 么公又大又硬又粗又爽小说 | 一级爱一级做a性视频 | 国产亚洲精品拍拍拍拍拍 | 日本黄漫画网站入口免费 | h在线观看视频 | 又黄又爽一线毛片免费观看 | 免费色在线 | 456亚洲人成高清在线 | 亚洲黄色天堂 | 最近中文字幕在线看免费视频 | 天天做天天爽爽快快 | 成人免费xxx色视频 成人免费xxxxx在线视频 | 毛片手机在线观看 | 国产亚洲青色国产 | 在线a视频网站 | 日韩1区| 在线观看午夜 | 午夜久草| 三级伦理在线 | 国产高清看片日韩欧美久久 | www.日韩在线 | 亚洲天堂网在线播放 | 亚洲美女高清aⅴ视频免费 亚洲美女福利 | 宅男在线永久免费观看99 | 国产一级一片免费播放i | 欧美日韩不卡在线 | 日韩美女免费线视频 | 极品国产一区二区三区 | 九九九精品视频免费 | 亚洲九九| 深夜免费在线观看 | 成人免费观看国产高清 | 毛片免费在线播放 | 亚洲黄色影片 | 特级毛片a级毛免费播放 |