ReadWriteLock 如何使用?】的更多相关文章

package cn.xxx.xxx; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class CacheDemo_My { public static void main(String[] args) { // 内部类…
package com.example; public class App { public static void main(String[] args) { Info info = new Info(); ReadInfo ri = new ReadInfo(info); WriteInfo wi = new WriteInfo(info); Thread t1 = new Thread(ri,"ri1"); Thread t2 = new Thread(ri,"ri2&…
读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可.如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁:如果你的代码修改数据,只能有一个人在写,且不能同时读取,那就上写锁.总之,读的时候上读锁,写的时候上写锁! 三个线程读数据,三个线程写数据示例:可以同时读,读的时候不能写,不能同时写,写的时候不能读.读的时候上读锁,读完解锁:写的时候上写锁,写完解锁.注意finally解锁. package com.ljq.test.threa…
http://my.oschina.net/20076678/blog/173165   一.在JDK文档中关于读写锁的相关说明 ReadWriteLock 维护了一对相关的 锁 ,一个用于只读操作,另一个用于写入操作.只要没有 writer, 读取锁 可以由多个 reader 线程同时保持. 写入锁 是独占的.  所有 ReadWriteLock 实现都必须保证 writeLock 操作的内存同步效果也要保持与相关 readLock 的联系.也就是说,成功获取读锁的线程会看到写入锁之前版本所做…
锁所提供的最重要的改进之一就是 ReadWriteLock 接口和它的实现类 ReentrantReadWriteLock.这个类提供两把锁,一把用于读操作和一把用于写操作.同一时间可以有多个线程执行读操作,但只有一个线程可以执行写操作.当一个线程正在执行一个写操作,不可能有任何线程执行读操作. public class VisitCounter { private ReadWriteLock lock; private long counter; public VisitCounter() {…
读写锁:多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥.即:读的时候不允许写,写的时候不允许读,可以同时读.      synchronized关键字和普通的Lock构造的锁,会造成读与读之间的互斥,因此读写锁可提高性能.   例子1:三个线程同时对一个共享数据进行读写.   import java.util.Random; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.Ree…
import java.util.ArrayList; import java.util.List; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class ReadWriteLockTest { private static List<String> list = new ArrayList<String…
JAVA的JUC包中的锁包括"独占锁"和"共享锁".JUC中的共享锁有:CountDownLatch.CyclicBarrier.Semaphore.ReentrantReadWriteLock等.本章会以ReentrantReadWriteLock为蓝本对共享锁进行说明. 一.ReentrantLock与ReentrantReadWriteLock 说到ReentrantReadWriteLock,首先要做的是与ReentrantLock划清界限.它和后者都是单独…
package cn.lyy.hibernate.many2one; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class MultiCacheDemo { private Map<String, Object> c…
目录 1.synchronized同步锁 2.ReentrantLock重入锁 3.ReadWriteLock读写锁 4.StampedLock戳锁(目前没找到合适的名字,先这么叫吧...) 5.总结 =======正文分割线========== 为了更好的支持并发程序,JDK内部提供了多种锁.本文总结4种锁. 1.synchronized同步锁 使用: synchronized本质上就2种锁: 1.锁同步代码块 2.锁方法 可用object.wait() object.notify()来操作线…