递增 模式
LongAdder cas 操作 分段 执行
Sync
AtomicLong 多线程 情况 cas 操作
基于cas操作 新类型的锁 ReentrantLock
synchronized 必须可重入
ReentrantLock 可以替换 synchronized
AQS 是 cas
新的锁都是AQS 所以新的锁 就是cas
CountDownLatch 多个线程 latch.countDown(); latch.await(); -------进一步执行以下逻辑
CyclicBarrier 满员发车 barrier.await();
限流 guava RateLimiter
并发执行
线程操作
线程操作
Phaser
ReadWriteLock 当你在读时 其他线程 写时,不可以 读可以 当你在写时,完全上锁
static Lock readLock = readWriteLock.readLock();
static Lock writeLock = readWriteLock.writeLock();
Semaphore s = new Semaphore(2); 同时允许两个线程同时执行
s.acquire();
线程之间 交换数据
static Exchanger<String> exchanger = new Exchanger<>();
s = exchanger.exchange(s);
实战 java 高并发设计 入门 张一鸣
锁的分类
乐观锁 cas 悲观锁sys 自旋锁 cas 读写锁 (排它锁 共享锁)readWriteLock 分段锁 LongAdder currenthashmap
加解锁 LockSupport.park(); LockSupport.unpark(t);
AQS (CLH)
volatile state 1 拿到 0 没有拿到 cas node线程多列抢不到锁的话 加入队列 head+tail 通过cas 加入队列