JUC-集合

简介: JUC-集合

JUC对于集合的支持

  • CopyOnWriteArrayList
  • ArrayList线程安全的变体
  • 基于ReentrantLock可重入锁、数组复制保证线程安全
  • 不会引发ConcurrentModificationException
  • 不支持迭代器,会抛出UnsupportedOperationException
  • 部分代码如下

public boolean add(E e) {
        final ReentrantLock lock = this.lock;
        //注意这里,基于ReentrantLock
        lock.lock();
        try {
            Object[] elements = getArray();
            int len = elements.length;
            //数字copy
            Object[] newElements = Arrays.copyOf(elements, len + 1);
            newElements[len] = e;
            setArray(newElements);
            return true;
        } finally {
            lock.unlock();
        }
    }
  • • ConcurrentLinkedQueue
  • 无界线程安全队列
  • 基于CAS保证线程安全
public boolean offer(E e) {
        checkNotNull(e);
        final Node<E> newNode = new Node<E>(e);
        for (Node<E> t = tail, p = t;;) {
            Node<E> q = p.next;
            if (q == null) {
                //注意这里,通过CAS新增节点
                if (p.casNext(null, newNode)) {
                    if (p != t) // hop two nodes at a time
                        casTail(t, newNode);  // Failure is OK.
                    return true;
                }
            }
            else if (p == q)
                p = (t != (t = tail)) ? t : head;
            else
                p = (p != t && t != (t = tail)) ? t : q;
        }
    }
  • ConcurrentHashMap
  • HashMap的线程安全变体
  • 基于CAS、synchronized(局部锁,不是全局锁)保证线程安全
目录
相关文章
|
6天前
|
安全 算法 Java
剑指JUC原理-19.线程安全集合(上)
剑指JUC原理-19.线程安全集合
27 0
|
6天前
|
安全 Java API
JavaEE初阶 CAS,JUC的一些简单理解,包含concurrent, ReentrantLock,Semaphore以及ConcurrentHashMap
JavaEE初阶 CAS,JUC的一些简单理解,包含concurrent, ReentrantLock,Semaphore以及ConcurrentHashMap
37 0
|
6天前
|
存储 安全 算法
java多线程之并发容器集合
java多线程之并发容器集合
|
9月前
|
安全 Java API
Java并发集合
传统类集框架的弊端 1.并发集合的类型 2.并发单值集合 3.并发多值集合 4.跳表集合
43 0
|
6天前
|
安全 Java 数据库
剑指JUC原理-19.线程安全集合(下)
剑指JUC原理-19.线程安全集合
37 0
|
10月前
|
存储 安全 算法
一天一个 JUC 工具类 -- 并发集合
使用JUC工具包中的并发集合,我们可以避免手动处理锁和同步的复杂性,从而降低出现线程安全问题的概率。这些并发集合通过内部采用高效的算法和数据结构来优化并发操作,从而提供更好的性能和扩展性。
|
7月前
|
安全 Java 索引
JUC第十六讲:JUC集合: CopyOnWriteArrayList详解
JUC第十六讲:JUC集合: CopyOnWriteArrayList详解
|
7月前
|
算法 安全 Java
JUC第十七讲:JUC集合: ConcurrentLinkedQueue详解
JUC第十七讲:JUC集合: ConcurrentLinkedQueue详解
|
7月前
|
存储 Java 容器
JUC第十八讲:JUC集合-BlockingQueue 详解
JUC第十八讲:JUC集合-BlockingQueue 详解
|
10月前
|
安全 Java 容器
集合的线程安全解读
集合的线程安全解读
集合的线程安全解读