java多线程---读写锁的应用
来源:互联网 发布:宁波软件外包 编辑:程序博客网 时间:2024/06/05 15:29
1.概述:为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率。
2.构建一个缓存示例:
public class CacheReadWriteLock { private Map<String, Object> map = new HashMap<String, Object>(); private ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); public static void main(String[] args) { CacheReadWriteLock cacheReadWriteLock = new CacheReadWriteLock(); for (int i = 0; i < 3; i++) { new Thread(new Runnable() { @Override public void run() { System.out.println(cacheReadWriteLock.getData("my")); } }).start(); } } public Object getData(String key) { readWriteLock.readLock().lock(); Object value = null; try { value = map.get(key); if (value == null) { readWriteLock.readLock().unlock(); readWriteLock.writeLock().lock(); try { if ((value = map.get(key)) == null) { value = "aaaa";// 查询db或耗时操作 map.put(key, value); System.out.println("readWriteLocking"); } } finally { readWriteLock.writeLock().unlock(); readWriteLock.readLock().lock(); } } } finally { readWriteLock.readLock().unlock(); } return value; }}
3.注意: 在同一线程中,持有读锁后,不能直接调用写锁的lock方法 ,否则会造成死锁。
阅读全文
0 0
- java多线程---读写锁的应用
- Java多线程--读写锁
- 设计一个缓存系统 java多线程读写锁的应用
- java 读写锁 java5特有的 多线程
- java多线程:ReentrantReadWriteLock读写锁的使用
- Java多线程--读写锁的使用
- 多线程的读写锁
- 【Java多线程】-读写锁ReadWriteLock
- Java-多线程的应用
- 【JAVA】多线程的应用
- Java多线程中读写锁ReadWriteLock的使用
- JAVA多线程-Lock的使用(四)-读写锁ReentrantReadWriteLock
- 单链表<br>java单链表的实现, 多线程 ,读写锁
- Java多线程编程4--ReentrantReadWriteLock的使用(读写锁)
- Java多线程与并发库高级应用之读写锁ReadWriteLock
- java多线程读写同一个文件的代码
- 多线程中,java锁的应用
- Java多线程 synchronized锁的应用
- 关于activeMq在本地测试报错org.apache.activemq.transport.InactivityIOException: Cannot send, channel has alrea
- 超链接A标签嵌套解决方案
- Tensorflow Device 和 DeviceContext
- [RK3288][Android6.0] Audio中的录音重采样小结
- XTTS 简介
- java多线程---读写锁的应用
- 动态规划解决数字塔-数字三角形问题
- 《lua程序设计》读书笔记 第七章:迭代器与泛型for
- MySQL 乐观锁与悲观锁
- JSP 使用smartupload上传文件,JSP+servlet
- 程序员常用远程工具有哪些?
- httpparse linux 截包工具
- Object类中的wait()方法和notify()方法
- git 指令易忘记部分