zoukankan      html  css  js  c++  java
  • 同步容器

    线程安全的容器对象:Vector,Hashtable。线程安全容器对象,都是使用synchronized方法实现的。

    concurrent包中的同步容器,大多数是使用系统底层技术实现的线程安全,类似native。java8中使用的CAS。CHECK AND SET

    1.Map/Set

    1.1ConcurrentHashMap/ConcurrentHashSet

    底层哈希实现的同步Map(Set)。效率高,线程安全。使用系统底层技术实现线程安全。量级较synchronized低。Key和value不能为null

    1.2ConcurrentSkipListMap/ConcurrentSkipListSet

    底层使用跳表实现同步Map(Set)。有序,效率比ConcurrentHashMap稍低。

    2.List

    2.1CopyOnWriteList

    写时复制集合。写入效率低,读取效率高。每次写入数据,都会创建一个新的底层数组。读取时每次都返回最新的数组。

    3.Queue

    3.1ConcurrentLinkedQueue

    基础链表同步队列。

    链表实现的--队列 先入先出

    offer() 加数据同add()

    peek()查看Queue中的首数据

    poll()获取Queue中的首数据 取出并删除

    3.2LinkedBlockingQueue

    阻塞队列,队列容量不足自动阻塞,队列容量为0自动阻塞。

    take 自动阻塞方法,队列容量为0,自动阻塞

    put 队列容量不足自动阻塞

    3.3ArrayBlockingQueue

    底层数组实现的有界队列。自动阻塞。根据调用API(add/put/offer)不同,有不同特性。

    当容量不足的时候,有阻塞能力。

    add方法在容量不足的时候抛出异常

    put方法在容量不足的时候,阻塞等待

    单参数offer方法不阻塞,监控容量,当数据满了会舍弃1234 长度是3 就存不进去,返回false

    三参数offer方法 (offer(value,times,tiemunit)),容量不足的时候,阻塞times时长(单位为timeunit),如果在阻塞时长内,有容量空闲,新增数据返回true。如果阻塞时长范围内,无容量空闲,放弃新增数据,返回false。

     

    3.4DelayQueue

    延时队列。根据比较机制,实现自定义处理顺序的队列。常用于定时任务。

    如:定时关机。

    比较大小,自动实现升序,建议和getDelay方法配合完成。如果在DelayQueue是需要按时完成的计划任务,必须配合getDelay方法完成。

    需要实现compareTo方法进行比较

    getDelay(TimeUnit):获取计划时长,根据TimeUnit来决定,如何返回结果值

     

    TransferQueue 转移队列 无容量

    3.5LinkedTransferQueue

    转移队列,使用 transfer 方法,实现数据的即时处理。没有消费者,就阻塞。

    3.6SynchronusQueue

    同步队列,是一个容量为 0 的队列。是一个特殊的 TransferQueue

    必须现有消费线程等待,才能使用的队列。

    add 方法,无阻塞。若没有消费线程阻塞等待数据,则抛出异常。

    put 方法,有阻塞。若没有消费线程阻塞等待数据,则阻塞。

  • 相关阅读:
    UVa OJ 148 Anagram checker (回文构词检测)
    UVa OJ 134 LoglanA Logical Language (Loglan逻辑语言)
    平面内两条线段的位置关系(相交)判定与交点求解
    UVa OJ 130 Roman Roulette (罗马轮盘赌)
    UVa OJ 135 No Rectangles (没有矩形)
    混合函数继承方式构造函数
    html5基础(第一天)
    js中substr,substring,indexOf,lastIndexOf,split等的用法
    css的textindent属性实现段落第一行缩进
    普通的css普通的描边字
  • 原文地址:https://www.cnblogs.com/hg1205/p/12834803.html
Copyright © 2011-2022 走看看