zoukankan      html  css  js  c++  java
  • 容器

    Collection

    List

    Vector

    Java1.0容器,线程安全,自带锁

    Stack

    ArrayList

    数组实现的非线程安全队列

    LinkedList

    基于链表实现的线程安全队列,内部方法使用了synchronized

    CopyOnWriteList

    写时复制,适合读多写少的业务。在添加一个元素的时候,会将之前的元素复制一份,扩容一个位置,然后添加新的元素。

    Set

    HsahSet

    EnumSet

    sortedSet

    CopyOnWriteArraySet

    写时复制,适合读多写少的业务。在添加一个元素的时候,会将之前的冤元素复制一份,扩容一个位置,然后添加新的元素。

    ConcurrentSkipListSet

    Queue

    Deque

    ArrayDeque

    BlockingDeque

    LinkedBlockingDeque

    BlockingQueue

    阻塞队列
    put()添加方法,加满了会阻塞
    take()获取方法,取空了会阻塞

    ArrayBlockQueue

    有界的,可以指的那个固定容量,一旦容器满了put方法就会阻塞,add方法会抛异常,offer方法可以用返回值判断是不是添加成功了,offer方法还可以添加一个时间参数(尝试添加超时时间)

    PriorityBlockingQueue

    LinkedBlockingQueue

    链表实现的无界队列,一直可以添加到内存满了为止。

    SynchronousQueue

    容量为0,不能存储内容,适用于两个线程之间传递内容,类似于Exchanger锁实现。
    take方法需要要put方法一起使用,只有put进去了才能take到内容

    TransferQueue

    可以用来线程间传递任务,SynchronousQueue只能传递一个,TransferQueue可以做成列表传递多个
    只有当取线程取走了内容,存线程才会离开继续执行

    LinkedTransferQueue

    PriortyQueue

    添加的时候可以是无序的,内部会做一个排序的操作。按照优先级最小的优先。
    内部实现结构是二叉树

    ConcurrentLinkedQueue

    DelayedQueue

    可是实现时间上的排序。
    需要实现Delayed接口,需要实现comparable接口的比较方法compareTo

    Map

    HashMap

    非线程安全,基于数组(key)和链表(value)实现,存储key-value键值对

    HashTable

    Java1.0容器,线程安全,自带锁

    LinkedHashMap

    TreeMap

    排好序的map

    WeakHashMap

    IdentityHashMap

    ConcurrentHashMap

    并发的,主要是读效率高,线程安全。Java8以前基于链表实现,8之后基于红黑树实现。
    内部方法没有加锁,用cas实现

    ConcurrentSkipListMap

    支持并发,线程安全。底层存储一个链表,有序的。
    查找的时候分多层,类似于mysql的索引结构。

  • 相关阅读:
    silverlight重写TextBox PassWordBox
    android使用html开发
    SilverLight中DataGrid显示值转换
    STM32 GPIO 的配置与使用
    开始。。
    VCS使用指令
    【转】关闭 Windows 7中的 6to4 隧道
    DC中关于list、双引号和花括号的使用区别
    解决了microblaze在ISE中例化时自动插入IO buffer
    Recovery time 和 Removal time的概念
  • 原文地址:https://www.cnblogs.com/farmersun/p/12686773.html
Copyright © 2011-2022 走看看