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 读写锁(读书笔记)
读写分离锁可以有效的帮助减少锁的竞争,提升系统的效率, 读-读不互斥 读读之间不阻塞 读-写互斥 读阻塞写,写也会阻塞读 写-写互斥 写写阻塞 在系统中,读操作次数远远大于写操作,则读写锁就可以发挥 ...
随机推荐
- 【转帖】两种IO模式:Proactor与Reactor模式
两种IO模式:Proactor与Reactor模式 https://www.cnblogs.com/pigerhan/p/3474217.html. 挺好的说明了epoll和IOCP的区别 在高性能的 ...
- Java开发笔记(一百三十八)JavaFX的箱子
前面介绍了JavaFX标签控件的用法,其中提到Label文本支持中文字体,那么它到底支持哪些中文字体呢?自然要看当前的操作系统都安装了哪些字体才行,对于中文的Windows系统,默认安装了黑体“Sim ...
- Python小知识点+保留字
注意 !/usr/bin/python # -- coding: UTF-8 -- #中文编码 Python空行:函数之间或类的方法之间用空行分隔,表示一段新的代码的开始 Python注释:单行注释采 ...
- Loader ,URLLoader ,URLStream的区别
AS3代码 (1) Loader Loader 类可用于加载 SWF 文件或图像(JPG.PNG 或 GIF)文件. 使用 load() 方法来启动加载. 被加载的显示 ...
- Python 判断字符串是否包含中文
一.摘要 使用 xlrd 模块打开带中文的excel文件时,会报错. FileNotFoundError: [Errno 2] No such file or directory: 'xx.xlsx' ...
- jdbcUrl is required with driverClassName
https://blog.csdn.net/newbie_907486852/article/details/81391525 springboot2.0配置多数据源: spring.datasour ...
- 配置Setting.xml文件提高maven更新下载jar包速度
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...
- (二) Windows 进行 Docker CE 安装(Docker Desktop)
参考并感谢 官方文档: https://docs.docker.com/docker-for-windows/install/ 下载地址 https://download.docker.com/win ...
- vue环境搭建及创建项目
安装node环境:node环境下载地址:https://nodejs.org/zh-cn/download/,可根据对应的操作系统版本下载安装 安装完成后查看对应的node和npm版本,如没有出现对应 ...
- 聊Java中的任务调度的实现方法及比较
前言 任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务.本文由浅入深介绍四种任务调度的 Java 实现: Timer ScheduledExecutor 开源工具包 Quartz ...