首页  

java并发包JUC简介     所属分类 java 浏览量 114
java.util.concurrent  JUC

集合
ConcurrentHashMap
ConcurrentSkipListMap
基于跳跃表,key 自然排序,key 不能为 null,类似 TreeMap
volatile+CAS  

ConcurrentSkipListSet  基于 ConcurrentSkipListMap 实现

CopyOnWriteArrayList
基于数组实现  数组初始长度为0
写时复制 CopyOnWrite COW

private transient volatile Object[] array;
public boolean add(E e) {
// 更新加锁 
final ReentrantLock lock = this.lock;
    lock.lock();
    try {
        Object[] elements = getArray();
        int len = elements.length;
        // 拷贝新数组,长度+1
        Object[] newElements = Arrays.copyOf(elements, len + 1);
        newElements[len] = e; 
        //  volatile  数组替换
        setArray(newElements);
        return true;
  } finally {
        lock.unlock();
    }
}



CopyOnWriteArraySet
基于 CopyOnWriteArrayList 实现 ,去重,按照插入顺序排序



非阻塞队列 ConcurrentLinkedQueue 基于链表 无界的线程安全的非阻塞队列 ,FIFO volatile+CAS private static class Node<E> { volatile E item; volatile Node<E> next; } private transient volatile Node<E> head; private transient volatile Node<E> tail; private boolean casTail(Node<E> cmp, Node<E> val) { return UNSAFE.compareAndSwapObject(this, tailOffset, cmp, val); } private boolean casHead(Node<E> cmp, Node<E> val) { return UNSAFE.compareAndSwapObject(this, headOffset, cmp, val); } ConcurrentLinkedDeque 双向链表 实现与 ConcurrentLinkedQueue 类似 static final class Node<E> { volatile Node<E> prev; volatile E item; volatile Node<E> next; }
阻塞队列 ReentrantLock Condition 通知等待 ArrayBlockingQueue LinkedBlockingQueue PriorityBlockingQueue 优先队列 基于二叉小顶堆 保证取出的元素是最小的,默认初始容量11 DelayQueue 基于数组实现 延迟阻塞队列 Delayed 接口 public interface Delayed extends Comparable<Delayed> { long getDelay(TimeUnit unit); }
原子类 AtomicInteger AtomicLong AtomicReference
并发工具类 CountDownLatch CyclicBarrier 支持 reset() 重置状态 ReentrantLock Condition
线程池 ThreadPoolExecutor 核心参数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) 核心线程数 最大线程数 线程空闲时间 线程空闲时间单位 任务队列 线程工厂 定制线程名 方便排查问题 决绝策略 CallerRunsPolicy AbortPolicy DiscardPolicy DiscardOldestPolicy
Lock和synchronized的区别 java并发机制的底层实现原理 ArrayBlockingQueue和LinkedBlockingQueue的区别 ConcurrentHashMap在jdk7和8中的区别 并发机制的底层实现原理摘要 AQS同步队列与条件队列 公平锁与非公平锁的关键区别 java8 ConcurrentHashMap 锁机制 线程池要点 java线程池实例 java线程池shutdown和shutdownNow的区别 ThreadPoolExecutor中的ctl变量 tomcat线程池要点 Java线程池ExecutorService与CompletionService Timer和ScheduledExecutorService的区别 Java锁机制 threadlocal实例及原理 LongAdder vs AtomicLong CountDownLatch 与 CyclicBarrier ConcurrentHashMap读操作为什么不需要加锁 ThreadLocal 与 SimpleDateFormat java关键字volatile原理 延迟队列原理及使用场景 java中的队列介绍 AQS要点整理 The java.util.concurrent Synchronizer Framework 翻译

上一篇     下一篇
feign消费端注解使用说明

JVM异常优化Fast Throw 与 OmitStackTraceInFastThrow 参数

arthas实战之生产环境空指针排查

身材就是你的名片

SpringBoot的指标数据

cron表达式实例