Java锁之Ree微信PK10源码出售ntrantRe搭建adWriteLock

我们先分析读微信PK10源码出售【征途源码论坛zhengtuwl.com】联系方式:QQ:2747044651写锁中的这4个int 常量,其实这4个常量的作用就是区分一个int整数的高16位和低16位的,ReentrantReadWriteLock锁还是依托于state变量作为获取锁的标准,那么一个state变量如何区分读锁和写锁呢?答案是通过位运算,高16位表示读锁,低16位表示写锁。如果对位运算不太熟悉或者不了解的同学可以看看这篇文章《位运算》。既然是分析读写锁,那么我们先从读锁和写锁的源码获取入手分析。

这里先提前补充一个概念:

写锁和读锁是互斥的(这里的互斥是指线程间的互斥,当前线程可以获取到写锁又获取到读锁,但是获取到了读锁不能继续获取写锁),这是因为读写锁要保持写操作的可见性,如果允许读锁在被获取的情况下对写锁的获取,那么正在运行的其他读线程无法感知到当前写线程的操作。因此,只有等待其他线程都释放了读锁,写锁才能被当前线程获取,而一旦写锁被获取,其他读写线程的后续访问都会被阻塞。

写锁tryLock()

猜你喜欢

转载自blog.51cto.com/13943682/2165575