读写锁(ReadWriteLock)
2019-11-22 09:32:37来源:博客园 阅读 ()
读写锁(ReadWriteLock)
为了提高性能,Java提供了读写锁,读写锁分为读锁和写锁。多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥,这是由JVM控制的。如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率。
读锁
如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁。
写锁
如果你的代码修改数据,只能有一个人在写,且不能同时读取,那就上写锁。总之,读的时候上读锁,写的时候上写锁。
Java中读写锁有个接口,java.util.concurrent.locks.ReadWriteLock,也有具体的实现ReentrantReadWriteLock。
代码示例:
1 public class TestReadWriteLock {
2 public static void main(String[] args) {
3 ReadWriteLockDemo rw = new ReadWriteLockDemo();
4 new Thread(new Runnable() {
5 public void run() {
6 rw.set((int)(Math.random() * 101));
7 }
8 }, "Write:").start();
9 for (int i = 0; i < 100; i++) {
10 new Thread(new Runnable() {
11 public void run() {
12 rw.get();
13 }
14 }).start();
15 }
16 }
17 }
18 class ReadWriteLockDemo{
19 private int number = 0;
20 private ReadWriteLock lock = new ReentrantReadWriteLock();
21 //读
22 public void get(){
23 lock.readLock().lock(); //上锁
24 try{
25 System.out.println(Thread.currentThread().getName() + " : " + number);
26 }finally{
27 lock.readLock().unlock(); //释放锁
28 }
29 }
30 //写
31 public void set(int number){
32 lock.writeLock().lock();
33 try{
34 System.out.println(Thread.currentThread().getName());
35 this.number = number;
36 }finally{
37 lock.writeLock().unlock();
38 }
39 }
40 }
原文链接:https://www.cnblogs.com/HuiH/p/11910889.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 【Java-jxl插件】【Excel文件读写报错】jxl.read.biff.BiffE 2020-06-07
- 数据结构:用实例分析ArrayList与LinkedList的读写性能 2020-06-04
- 【漫画】读写锁ReadWriteLock还是不够快?再试试StampedLock 2020-05-17
- 【漫画】互斥锁ReentrantLock不好用?试试读写锁ReadWriteLo 2020-05-15
- 读写分离很难吗?SpringBoot结合aop简单就实现了 2020-05-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash