机制:每个锁都关联一个请求计数器和一个占有他的线程,当请求计数器为0时,这个锁可以被认为是unhled的,当一个线程请求一个unheld的锁时,JVM记录锁的拥有者,并把锁的请求计数加1,如果同一个线程再次请求这个锁时,请求计数器就会增加,当该线程退出syncronized块时,计数器减1,当计数器为0时,锁被释放. java锁的可重入性机制可以解决下面这个问题: public class Widget { public synchronized void doSomething() {
这篇讲讲ReentrantReadWriteLock可重入读写锁,它不仅是读写锁的实现,而且支持可重入性. 聊聊高并发(十五)实现一个简单的读-写锁(共享-排他锁) 这篇讲了怎样模拟一个读写锁. 可重入的读写锁的特点是 1. 当有线程获取读锁时,不同意再有线程获得写锁 2. 当有线程获得写锁时.不同意其它线程获得读锁和写锁 这里隐含着几层含义: static final int SHARED_SHIFT = 16; static final int SHARED_UNIT = (1 << SH