zoukankan      html  css  js  c++  java
  • arrayBlockingQuere的用法

    先来说BlockingQueue的核心方法:

    1、放入数据

      (1) add(object)

        队列没满的话,放入成功。否则抛出异常。

     (2)offer(object):

        表示如果可能的话,将object加到BlockingQueue里,即如果BlockingQueue可以容纳,则返回true,否则返回false.(本方法不阻塞当前执行方法的线程)
     (3)offer(E o, long timeout, TimeUnit unit)

          可以设定等待的时间,如果在指定的时间内,还不能往队列中加入BlockingQueue,则返回失败。
    (4)put(object)

           把object加到BlockingQueue里,如果BlockQueue没有空间,则调用此方法的线程阻塞。直到BlockingQueue里面有空间再继续.

    2、获取数据
    (1)poll(time)

       取走BlockingQueue里排在首位的对象,若不能立即取出,则可以等time参数规定的时间,取不到时返回null;
    (2)poll(long timeout, TimeUnit unit)

       从BlockingQueue取出一个队首的对象,如果在指定时间内,队列一旦有数据可取,则立即返回队列中的数据。否则知道时间超时还没有数据可取,返回失败。

    (3)take()

      取走BlockingQueue里排在首位的对象,若BlockingQueue为空,阻断进入等待状态直到BlockingQueue有新的数据被加入; 
    (4)drainTo()

       一次性从BlockingQueue获取所有可用的数据对象(还可以指定获取数据的个数),通过该方法,可以提升获取数据效率;不需要多次分批加锁或释放锁。

    ArrayBlockingQuere

    一个由数组支持的有界阻塞队列。它的本质是一个基于数组的BlockingQueue的实现。它的容纳大小是固定的。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列检索操作则是从队列头部开始获得元素。 这是一个典型的“有界缓存区”,固定大小的数组在其中保持生产者插入的元素和使用者提取的元素

     

  • 相关阅读:
    高阶类型的特征是包含类型构造器、包含类型参量
    类型系统的分类
    类型转化与类型变换
    类型导出模式-类型封装模式-命名空间模式
    xcode 通配搜索
    Swift 命名空间形式扩展的实现
    Swift3命名空间的实现
    函数式编程:上线文、包裹、容器-我们可以将一个值用Context(上下文)包裹起来
    swift 使用计算属性+结构管理内存
    Locations for Public Frameworks
  • 原文地址:https://www.cnblogs.com/otways/p/11576611.html
Copyright © 2011-2022 走看看