4 互斥锁的弱化版本:读写锁
来源:互联网 发布:女生用的吉他淘宝 编辑:程序博客网 时间:2024/06/08 08:34
package Test;import java.util.Random;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/* * 互斥锁稍微弱化的版本:读写锁,可以一起读,读写互斥写写互斥 * */public class RWLock {static int k = 1;static ReadWriteLock rwl = new ReentrantReadWriteLock();public static void main(String[] args){for(int i=0;i<2;i++){new Thread(new Runnable(){public void run(){while(true){rwl.readLock().lock();try{System.out.println("读:"+Thread.currentThread().getName()+":"+k);try{Thread.sleep(500);}catch(InterruptedException e){}}finally{rwl.readLock().unlock();}}}}).start();}for(int i=0;i<2;i++){new Thread(new Runnable(){public void run(){while(true){rwl.writeLock().lock();try{k = new Random().nextInt(10);try {Thread.sleep(500);System.out.println("写:"+Thread.currentThread().getName()+":"+k);} catch (InterruptedException e) {}}finally{rwl.writeLock().unlock();}}}}).start();}}}
读写锁的一个应用:
package Test;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/* * 读写锁的例子:cache * */public class SynCache {private Map<String,Object> map = new HashMap<String,Object>();private ReadWriteLock rwl = new ReentrantReadWriteLock();public Object get(String s){Object o = null;rwl.readLock().lock();try{o = map.get(s);if(o==null){rwl.readLock().unlock();rwl.writeLock().lock();try{if(map.get(s)==null) o = "get data from base";else //之前已经有个线程去DB得到数据o = map.get(s);}finally{rwl.writeLock().unlock();}}}finally{rwl.readLock().unlock();}return o;}}
- 4 互斥锁的弱化版本:读写锁
- kmp算法的弱化版本 mp算法
- .net生态环境的弱化
- map的弱化构造
- .net生态环境的弱化
- python 版本的读写锁
- GDI画图时的锯齿效果弱化
- Cocos2d-JNI-Android之JNI的弱化
- ★关于人类体质弱化的分析
- 假装能a的网络流,弱化的费用流
- 图片预装载弱化图片一张一张刷出的效果
- hdu 1829 并查集(食物链的弱化版)
- 语音识别,自然语言处理的价值正被弱化?
- 使用objcopy 弱化符号,以达到替换函数的目的
- Android4.4版本后 限制第三方应用读写外置SD卡的权限问题
- 遮罩层——通过阴影弱化背景的四种方案
- 洛谷P1569属牛的抗议 超级强力无敌弱化版
- android4以上版本读写外置sd卡报错的解决办法
- 在eclipse中反编译并查看jar包的class文件,批量反编译
- 获取本地图片代码
- Python3.3.0+apache2.4.4+django1.5.4+mod_wsgi3.4安装
- 几种网络负载均衡方法比较
- MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介
- 4 互斥锁的弱化版本:读写锁
- POJ 1265 Area Pick定理
- Codeforces Round #157 (Div. 1) B. Little Elephant and Elections
- log4cplus 学习笔记
- Rhel上安装oracle的配置参数解析,pam,limits,profile
- hive介绍
- 拷贝构造函数与赋值构造函数(operator=)的区别
- Android APK反编译详解(附图)
- hive的数据类型和数据模型