-
Java 中的锁 StampedLock
主要方法 readLock():获取悲观读锁,阻塞等待。 unlockRead():释放读锁。 writeLock():获取悲观写锁,阻塞等待。 unlock
-
Java 中的锁 ReentrantReadWriteLock 读写锁
读写锁 读读不互斥,读写互斥,写写互斥。 代码示例 public class ReadWriteLockDemo { public static vo
-
Java 中的锁 ReentrantLock
特性 可重入、互斥(读写互斥、写写互斥、读读互斥),只能有一个线程进行操作。 默认是非公平锁,可通过构造函数指定是否是公平锁。非公平锁性能略微好一些,主要是第一
-
Java 中的自旋锁
自旋锁 使用CAS+无限循环组成自旋锁。 原子引用类保存持有锁的线程,其他线程将使用CAS+自旋争夺锁。 示例代码 public class SpinLockD
-
Java 中的死锁
描述 线程A先锁定DeadLock字节码对象,在内部延迟1秒,再锁定Object字节码对象。 线程B先锁定Object字节码对象,在内部延迟1秒,再锁定Dead
-
Java 中的锁 synchronized
锁的状态 无锁状态、偏向锁、轻量级锁、重量级锁。 偏向锁加锁过程 访问Mark Word中偏向锁的标识是否设置成1,锁标志位是否为01,确认为可偏向状态。 如
-
Java 中的锁
关键词和类 synchronized ReentrantLock ReentrantReadWriteLock StampedLock LockSupport
-
Java FutureTask 源码解析
说明 本文基于Java8。 构造方法 传入Callable对象,使用成员变量接收,并将状态改为NEW。 private Callable<V> ca
-
惊群效应是什么?如何避免惊群效应?
线程惊群 惊群效应(thundering herd)是指多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的
-
Java 并发编程之 Phaser
作用 可重用的同步屏障,用法与CountDownLatch和CyclicBarrier相似,支持更灵活的用法。 构造函数 parties:需要参与协作的线程数量
-
Java 并发编程之 Semaphore
作用 限制一定数量的线程去访问资源。 互斥锁:许可证为1时,可用作互斥锁。 ATM取钱:许可证>1时,获得许可证的线程唤醒。 构造函数 permi
-
Java 并发编程之 CyclicBarrier
作用 允许一组线程互相等待,以达到共同的障碍点,再执行CyclicBarrier中指定Runable任务。 人满开车:到3(设置人数)就开车。 构造函数 par
-
Java 并发编程之 CountDownLatch
作用 允许一个或多个线程等待,直到其他线程的一组操作完成后,再完成自身线程中暂停后的后续操作。 倒计时:到0(设置倒数几秒)就执行下一步。 构造函数 count