我们知道 Java 程序依靠 synchronized 对线程进行同步,使用 synchronized 的时候…
Java 的线程锁是可重入的锁。 什么是可重入的锁?我们还是来看例子: public class Counte…
在 Java 程序中,synchronized解决了多线程竞争的问题。例如,对于一个任务管理器,多个线程同时往…
从 Java 5 开始,引入了一个高级的处理并发的 java.util.concurrent 包,它提供了大量…
使用 ReentrantLock 比直接使用 synchronized 更安全,可以替代 synchroniz…
前面讲到的 ReentrantLock 保证了只有一个线程可以执行临界区代码: public class Co…
前面介绍的 ReadWriteLock 可以解决多线程同时读,但只有一个线程能写的问题。 如果我们深入分析Re…
前面我们讲了各种锁的实现,本质上锁的目的是保护一种受限资源,保证同一时刻只有一个线程能访问(Reentrant…
我们在前面已经通过 ReentrantLock 和Condition实现了一个BlockingQueue: p…
Java 的 java.util.concurrent 包除了提供底层锁、并发集合外,还提供了一组原子操作的封…