ConcurrentHashMap底层原理
ConcurrentHashMap底层原理 jdk1.7是数组加链表,它在对象中保存了一个Segment数组。每个Segment元素类似于一个Hashtable;这样,在执行put操作时首先根据hash算法定位到元素属于哪个Segment,然后对该Segment加锁即可,不同的Segment可以并发put。而Segment的锁实现其实是ReentrantLock jdk1.8则是采用了数组+链表/红黑树,他舍弃了Segment数组,用的是CAS +...
Volatile原理
Volatile原理
Synchronized 与 ReentrantLock 的区别
Synchronized 与 ReentrantLock 的区别 synchronized:隐式锁,JVM 自动加锁 / 释放锁 ReentrantLock:显式锁,需要手动 lock() / unlock() ReentrantLock 本质上是基于 AQS 实现的。 synchronized是非公平锁 然后ReentrantLock 有公平锁有非公平锁 ReentrantLock 支持中断lock.lockInterruptibly();还有超时获取锁 123if (lock.tryLock(1, TimeUnit.SECONDS)) { try { } finally { lock.unlock(); }} synchronized ReentrantLock 锁类型 隐式锁 显式锁 释放方式 自动 手动 公平锁 不支持 支持 可中断 不支持 支持 超时获取 不支持 支持 底层 JVM AQS ReentrantLock的使用场景 一般场景我优先使用...





