• Concurrent并发工具集合简介


    ConcurrentHashMap: 一个高并发的HashMap

    CopyOnWriteArrayList : 这是一个list和ArrayList是 一族,在读多写少的场合,这个list性能非常好   (当写入当时候,先对数组进行了次复制,Arrays.copyof(oldArr,len+1),然后setArray(newArr))

    ConcurrentLinkedQueue:高效的并发队列(高并发中性能最好的队列),可以看作一个线程安全的LinkedList

    BlockingQueue:接口,JDK内部通过链表、数组等方式实现了这个借口,表示阻塞队列,非常适用于作为数据共享的通道。

      LinkedBlockingQueue适合做无界或者边界非常大的队列(因为内部可以动态增加)

      ArrayBlockingQueue更适合做有界队列,因为队列中可容纳的最大元素需要在队列创建的时候指定(毕竟数组的动态扩展不方便)

        poll() 得到一个头部元素,如果空直接返回null,  take()) 得到一个头部元素,如果空,会等待

        offer()插入一个元素,如果队列满了,返回false,put()插入一个元素,如果队列满了,就等待      

      public void put(E e) throws InterruptedException {
            checkNotNull(e);
            final ReentrantLock lock = this.lock;
            lock.lockInterruptibly();
            try {
                while (count == items.length)
                    notFull.await();
                enqueue(e);
            } finally {
                lock.unlock();
            }
        }

    ConcurrentSkipListMap:跳表的实现,这是一个map,使用跳表的数据结构进行快速查找

      1、跳表的一个特点是随机算法,跳表的本质是同时维护多个链表,并且链表分层(空间换时间)

       2、如上图,第二个特点,底层是顺序的,我们搜索55只需要2次查找即可。这个结构中,查询元素46仍然是最耗时的,需要查询5次。即首先在L3层查找2次,然后在L2层查找2次,最后在L1层查找1次,共5次。

       跳表实现Map和使用哈希方法实现map的另一个不同之处就是,哈希不会保存元素的顺序,而跳表内的元素是排序的。

  • 相关阅读:
    Canvas技术
    线段树树状数组小结
    html5 Canvas元素
    ccpc网络邀请赛部分
    2020杭电多校
    JavaFx 绘制图形和文本(笔记)
    P4094 [HEOI2016/TJOI2016]字符串(二分+多种数据结构)
    L3-021 神坛 (30分) (计算几何最小三角形面积)
    10月28日G、H、I题
    出栈序列的合法性 (25分) 之树状数组玄学做法
  • 原文地址:https://www.cnblogs.com/sg9527/p/8005013.html
Copyright © 2020-2023  润新知