JUC-10-ReadWriteLock读写锁
aaarticlea/png;base64,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" alt="" /> package com.wf.zhang.juc; import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock; /**
* ReadWritelock 读写锁
*
*
* 写写/读写 需要"互斥"
*
* 读读 不需要互斥
*/
public class TestReadWriterlock { public static void main(String[] args) {
ReadWriterlockDemo rw = new ReadWriterlockDemo();
//一个线程写
new Thread(new Runnable() {
@Override
public void run() {
rw.set((int) (Math.random() * 101));
}
},"写锁").start(); //100个线程读
for (int i = 0; i <=100; i++) { new Thread(new Runnable() {
@Override
public void run() {
rw.get();
}
}).start();
} }
} class ReadWriterlockDemo { private int number = 0; private ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); //读
public void get() {
readWriteLock.readLock().lock();
try { System.out.println(Thread.currentThread().getName() + " 读" + number);
} finally {
readWriteLock.readLock().unlock();
}
} //写
public void set(int number) {
this.number = number;
readWriteLock.writeLock().lock();
try { System.out.println(Thread.currentThread().getName() + " 写 " +number);
} finally {
readWriteLock.writeLock().unlock();
}
}
}
JUC-10-ReadWriteLock读写锁的更多相关文章
- 12. ReadWriteLock 读写锁
package com.gf.demo11; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent. ...
- ReadWriteLock读写锁(八)
前言:在JUC ReentrantReadWriteLock是基于AQS实现的读写锁实现. ReadWriteLock中定义了读写锁需要实现的接口,具体定义如下: public interface R ...
- java多线程 -- ReadWriteLock 读写锁
写一条线程,读多条线程能够提升效率. 写写/读写 需要“互斥”;读读 不需要互斥. ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作.只要没有 writer,读取锁 ...
- GUC-9 ReadWriteLock : 读写锁
import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWrit ...
- ReadWriteLock: 读写锁
ReadWriteLock: 读写锁 ReadWriteLock: JDK1.5提供的读写分离锁,采用读写锁分离可以有效帮助减少锁竞争. 特点: 1).使用读写锁.当线程只进行读操作时,可以允许多个线 ...
- 22.ReadWriteLock读写锁
import java.util.Random; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.R ...
- Java并发:ReadWriteLock 读写锁
读写锁在同一时刻可以允许多个线程访问,但是在写线程访问,所有的读线程和其他写线程均被阻塞. 读写锁不像 ReentrantLock 那些排它锁只允许在同一时刻只允许一个线程进行访问,读写锁可以允许多个 ...
- 【转】java并发编程系列之ReadWriteLock读写锁的使用
前面我们讲解了Lock的使用,下面我们来讲解一下ReadWriteLock锁的使用,顾明思义,读写锁在读的时候,上读锁,在写的时候,上写锁,这样就很巧妙的解决synchronized的一个性能问题:读 ...
- Java多线程之ReadWriteLock读写锁简介与使用教程
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6558073.html 普通的锁在对某一内容加锁后,其他线程是不能访问的.但是我们要考虑这种情况:如果当前加锁 ...
- ReadWriteLock 读写锁(读书笔记)
读写分离锁可以有效的帮助减少锁的竞争,提升系统的效率, 读-读不互斥 读读之间不阻塞 读-写互斥 读阻塞写,写也会阻塞读 写-写互斥 写写阻塞 在系统中,读操作次数远远大于写操作,则读写锁就可以发挥 ...
随机推荐
- 深度解析qml引擎---(1)Qml文件加载
"美的事物是永恒的喜悦" --- 济慈 ...
- AOP实现事务和记录日志
AOP (Aspect Oriented Programming) 将非功能性需求从功能性需求中剥离出来,解耦并且解决代码复用的问题,比如说权限控制,事务控制,记录操作日志,全局捕获异常等 @Aspe ...
- [转帖]央行推出数字货币DCEP:基于区块链技术、将取代现钞
央行推出数字货币DCEP:基于区块链技术.将取代现钞 天天快报的内容. 密码财经 2019-10-29 18:15 关注 前不久的10月23日,Facebook的首席执行官扎克伯格在美国国会听证会 ...
- [转帖]熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程 | Science
熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程 | Science https://mp.weixin.qq.com/s/hJeJjh0GSUclcoh3Z6mySQ 关注前沿科技 量 ...
- [转帖]keepalived实现服务高可用
keepalived实现服务高可用 https://www.cnblogs.com/clsn/p/8052649.html 第1章 keepalived服务说明 1.1 keepalived是什么? ...
- Java开发笔记(一百一十八)AWT按钮
前面介绍了如何通过AWT显示程序的窗口界面,那么要怎样在该窗口上面添加丰富多样的控件呢?注意Frame类是个窗口工具,它由窗楣(标题栏)与窗体(窗口主界面)两部分组成,故而Frame类只对整个窗口统筹 ...
- 使用PHP开发HR系统(4)
本节我们讲述如何引入页面框架来建立漂亮的主页. ============================================================================ ...
- 面试6 --- 当List<String> list =new ArrayList<String>(20); 他会扩容多少次
当List<String> list =new ArrayList<String>(20); 他会扩容多少次?A 0 B 1 C 2 D 3答案是A: 因为这个集合 ...
- 在jenkins中使用shell命令推送当前主机上的docker镜像到远程的Harbor私有仓库
1.jenkins主机上的docker配置 先在Jenkins主机的docke上配置上Harbor私有仓库地址 cat /etc/docker/daemon.json { "insecure ...
- java之struts2之OGNL表达式
struts2推荐使用ognl表达式 ognl: object graph navigation language 对象导航图语言 如:school.teacher.address="北京& ...