java ReentrantReadWriteLock
- // read and write lock is mutual exclusion lock
- //Listing 7-3. Using ReadWriteLock to Satisfy a Dictionary Application’s Reader and
- //Writer Threads
- import java.util.HashMap;
- import java.util.Map;
- import java.util.concurrent.Executors;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.locks.Lock;
- import java.util.concurrent.locks.ReadWriteLock;
- import java.util.concurrent.locks.ReentrantReadWriteLock;
- public class A
- {
- public static void main(String[] args)
- {
- final String[] words =
- {
- "hypocalcemia",
- "prolixity",
- "assiduous",
- "indefatigable",
- "castellan"
- };
- final String[] definitions =
- {
- "a deficiency of calcium in the blood",
- "unduly prolonged or drawn out",
- "showing great care, attention, and effort",
- "able to work or continue for a lengthy time without tiring",
- "the govenor or warden of a castle or fort"
- };
- final Map<String, String> dictionary = new HashMap<String, String>();
- ReadWriteLock rwl = new ReentrantReadWriteLock(true);
- final Lock rlock = rwl.readLock();
- final Lock wlock = rwl.writeLock();
- Runnable writer = () ->
- {
- for (int i = ; i < words.length; i++)
- {
- wlock.lock();
- try
- {
- dictionary.put(words[i],definitions[i]);
- System.out.println("writer storing " +words[i] + " entry");
- }
- finally
- {
- wlock.unlock();
- }
- try
- {
- Thread.sleep();
- }
- catch (InterruptedException ie)
- {
- System.err.println("writer " +
- "interrupted");
- }
- }
- };
- ExecutorService es = Executors.newFixedThreadPool();
- es.submit(writer);
- Runnable reader = () ->
- {
- while (true)
- {
- rlock.lock();
- try
- {
- int i = (int) (Math.random() * words.length);
- System.out.println("reader accessing " + words[i] + ": " +dictionary.get(words[i])
- + " entry");
- }
- finally
- {
- rlock.unlock();
- }
- }
- };
- es = Executors.newFixedThreadPool();
- es.submit(reader);
- }
- }
java ReentrantReadWriteLock的更多相关文章
- 收藏的技术文章链接(ubuntu,python,android等)
我的收藏 他山之石,可以攻玉 转载请注明出处:https://ahangchen.gitbooks.io/windy-afternoon/content/ 开发过程中收藏在Chrome书签栏里的技术文 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 【Java并发编程实战】-----“J.U.C”:ReentrantReadWriteLock
ReentrantLock实现了标准的互斥操作,也就是说在某一时刻只有有一个线程持有锁.ReentrantLock采用这种独占的保守锁直接,在一定程度上减低了吞吐量.在这种情况下任何的"读/ ...
- Java多线程系列--“JUC锁”08之 共享锁和ReentrantReadWriteLock
概要 Java的JUC(java.util.concurrent)包中的锁包括"独占锁"和"共享锁".在“Java多线程系列--“JUC锁”02之 互斥锁Ree ...
- Java Lock ReentrantLock ReentrantReadWriteLock
Lock与Synchronized的区别: 1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现: 2)synchronized在发生异 ...
- Java多线程(五) Lock接口,ReentranctLock,ReentrantReadWriteLock
在JDK5里面,提供了一个Lock接口.该接口通过底层框架的形式为设计更面向对象.可更加细粒度控制线程代码.更灵活控制线程通信提供了基础.实现Lock接口且使用得比较多的是可重入锁(Reentrant ...
- java中ReentrantReadWriteLock读写锁的使用
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象.两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象. 读写锁:分为读 ...
- java多线程:ReentrantReadWriteLock读写锁使用
Lock比传统的线程模型synchronized更多的面向对象的方式.锁和生活似,应该是一个对象.两个线程运行的代码片段要实现同步相互排斥的效果.它们必须用同一个Lock对象. 读写锁:分为读锁和写锁 ...
- 聊聊高并发(二十九)解析java.util.concurrent各个组件(十一) 再看看ReentrantReadWriteLock可重入读-写锁
上一篇聊聊高并发(二十八)解析java.util.concurrent各个组件(十) 理解ReentrantReadWriteLock可重入读-写锁 讲了可重入读写锁的基本情况和基本的方法,显示了怎样 ...
随机推荐
- loj 1034(最小点基)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25911 思路:强连通缩点,在新图中找入度为0的点的个数即可. #i ...
- chche缓存
打开一张图片,先从缓存中找,如果没有,再去sccard中找,如果还没有,就去网络下载.下载好了以后,先保存到sdcard中,再保存到缓存中 public class ImageAsyncTask ex ...
- Android,visibility属性
Android,visibility属性 1) 可见(visible)XML文件:android:visibility="visible"Java代码:view.setVisibi ...
- EntityFramework 6.0< Code First > 连接 Mysql数据库
网上有很多关于用EntityFrame来连接Mysql数据库的教程,可是很多并不靠谱,转载的太多了.找了很久,总算是配置好了,现在分享一下. 一,安装: 1.开发环境: VS2013与EF6 ...
- flst与fitem命令是这么用的
k,94,75.69947,44.09817,-40 k,95,50.9349,44.01963,-40 k,96,37.83799,45.04814,-40 k,97,15.1304,48.2934 ...
- extjs 选项卡
yufenghou extjs 选项卡 <%@ page language="java" import="java.util.*" pageEncodin ...
- XCOJ 1102 (树形DP+背包)
题目链接: http://xcacm.hfut.edu.cn/oj/problem.php?id=1102 题目大意:树上取点.父亲出现了,其儿子包括孙子...都不能出现.给定预算,问最大值. 解题思 ...
- BestCoder Round #72
由于第一次打,只能在div2打.(这么好的机会还没AK真是丢人) T1 Clarke and chemistry 枚举题不解释(我不会告诉你我上来WA了四发的) T2 Clarke and point ...
- Mysql 学习
一.ubuntu下mysql的安装: 通过sudo apt-get install mysql-server 完成: 然后可以通过/etc/init.d/mysql 进行start/stop/rest ...
- Ubuntu SSH root user cannot login
Open /etc/ssh/sshd_config and check if PermitRootLogin is set to yes. If not, then set it to yes and ...