基础集合:
ArrayList: 数组结构,容量最高Integer.MAX_VALUE,初始默认容量10,每次扩容1.5倍
LinkedList:链表结构,无限队列
HashMap:数组+链表(8+红黑树),初始默认容量16,上限1<<30,负载因子0.75,每次扩容2倍
基础拓展集合:
HashSet: 内部靠将值设置为HashMap的key值来进行去重
LinkedHashMap:继承HashMap,重写节点结构,加入指针保证读取有序。
TreeSet: 红黑树结构,自然排序或者自定义排序。
并发工具:
UnSafe:java加锁底层工具类,支持cas
LockSupport:推荐程序中使用的底层加锁工具
AbstractQueuedSynchronizer :AQS结构抽象类,多数加锁类的父类
ReentrantLock: 支持公平锁与非公平锁
ReentrantReadWriteLock:读写锁
CountDownLatch:线程执行递减计数器
CyclicBarrier:线程栅栏
Semaphore:控制线程通过数量
Exchanger:线程间数据交换工具
并发数据结构:
ConcurrentHashMap:分段锁 数组+链表 ,最大容量Integer.MAX_VALUE - 8,扩容机制与HashMap相同
ConcurrentLinkedQueue:双端加锁,单向队列,cas往队尾加节点
ConcurrentLinkedDeque:双向链表结构的无界并发队列,首尾均可cas添加节点
ConcurrentSkipListMap:跳表结构,有序结构,并发越多相对ConcurrentHashMap性能越高
CopyOnWriteArrayList:Object数组结构,修改时直接更换新数组批量复制过去,一个ReentrantLock全局锁解决并发问题
CopyOnWriteArraySet: 底层靠CopyOnWriteArrayList的addIfAbsent()方法实现去重
CAS典型工具类:
AtomicInteger、AtomicLong、AtomicBoolean:其中布尔型内部是int值
AtomicLongArray:内部是long[]数组
AtomicReference :内部定义一个泛型变量,对这个变量进行cas计算赋值
AtomicReferenceArray:内部定义Object[]数组
AtomicStampedReference:用版本号解决ABA问题
线程池工具:
Executors:jdk自带创建线程池工具
ExecuteService:线程池接口
AbstractExecuteService:线程池抽象类
ScheduledExecutorService:调度线程池