26.读-写锁 ReadWriteLock
来源:互联网 发布:java 计算时间的差 编辑:程序博客网 时间:2024/06/05 00:36
①ReadWriteLock维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。只要没有writer,读取锁可以多个reader线程同时保持,写入锁是独占的。
②ReadWriterLock读取操作通常不会改变共享资源的,但执行写入操作时,必须独占方式来获取锁。对于读取操作占多数的数据结构。ReadWriteLock能提供比独占锁更高的并发性。而对于只读的数据结构,其中包含的不变性可以完全不需要考虑加锁操作。
import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/* * 1. ReadWriteLock : 读写锁 * * 写写/读写 需要“互斥” * 读读 不需要互斥 */public class TestReadWriteLock {public static void main(String[] args) {final ReadWriteLockDemo rw = new ReadWriteLockDemo();new Thread(new Runnable() {@Overridepublic void run() {rw.set((int)(Math.random() * 101));}}, "Write:").start();for (int i = 0; i < 100; i++) {new Thread(new Runnable() {@Overridepublic void run() {rw.get();}}).start();}}}class ReadWriteLockDemo{private int number = 0;private ReadWriteLock lock = new ReentrantReadWriteLock();//读public void get(){lock.readLock().lock(); //上锁try{System.out.println(Thread.currentThread().getName() + " : " + number);}finally{lock.readLock().unlock(); //释放锁}}//写public void set(int number){lock.writeLock().lock();try{System.out.println(Thread.currentThread().getName()+""+number);this.number = number;}finally{lock.writeLock().unlock();}}}
0 0
- 26.读-写锁 ReadWriteLock
- 读-写锁ReadWriteLock
- 并发编程--读写锁ReadWriteLock和ReentrantReadWriteLock写锁与读锁(二)
- 【读写锁】ReadWriteLock闪亮登场、自己写一个缓存系统
- 【读写锁】ReadWriteLock闪亮登场、自己写一个缓存系统
- 线程ReadWriteLock 读写锁
- JDK5 读写锁 ReadWriteLock
- java ReadWriteLock锁
- 读写锁ReadWriteLock
- java 读写锁 ReadWriteLock
- # 读写锁类ReadWriteLock #
- 读写锁ReadWriteLock
- ReadWriteLock : 读写锁
- 读写锁ReadWriteLock
- Java读写锁ReadWriteLock
- 读写锁:ReadWriteLock
- ReadWriteLock 读写锁测试
- ReadWriteLock
- 2017跟着小虎玩着去软考--趣味好玩解析2015年下半年信息系统项目管理师上午试题46-50题
- 我用过和未用过的浏览器
- CList类的GetNext函数
- jvm内存区
- VS2013的Release模式下进行调试
- 26.读-写锁 ReadWriteLock
- xp连接VPN错误提示: vpn连接出错789:L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到一个处理错误。
- Cocoapods的安装和使用
- 监视物理组件的linux命令
- 光模块的常见封装类型
- mysql的数据备份和还原
- 删除外向交货单 BAPI_OUTB_DE…
- 文本相关
- csapeditorctrl getobject&nb…