`
bo_hai
  • 浏览: 554124 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ReadWriteLock 使用实例

 
阅读更多

首先来讨论ReadWriteLock 类的使用场景,记住一句话:在多线程,“读多写少”的场景就推荐使用,可以提高线程的性能。下面是一个实例:

import java.util.Map;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

public class WriteReadMap<K, V> {
	private final Map<K,V> map;
	private final ReadWriteLock lock = new ReentrantReadWriteLock();
	private final Lock r = lock.readLock();
	private final Lock w = lock.writeLock();
	
	public WriteReadMap(Map<K, V> map) {
		this.map = map;
	}
	
	public V put(K key,V value) {
		w.lock();
		try {
			return  map.put(key, value);
		} finally {
			w.unlock();
		}
	}
	
	public V get(Object key) {
		r.lock();
		try {
			return map.get(key);
		} finally {
			r.unlock();
		}
	}
}

 

分享到:
评论
1 楼 bo_hai 2014-09-04  
获取锁的操作lock()最好放在try块中。

相关推荐

    Java语言ReadWriteLock特性实例测试

    主要介绍了Java语言ReadWriteLock特性实例测试,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    Java多线程编程之读写锁ReadWriteLock用法实例

    主要介绍了Java多线程编程之读写锁ReadWriteLock用法实例,本文直接给出编码实例,需要的朋友可以参考下

    Java多线程之readwritelock读写分离的实现代码

    主要介绍了Java多线程之readwritelock读写分离的相关内容,文中涉及具体实例代码,具有一定参考价值,需要的朋友可以了解下。

    javaSE代码实例

    17.3.3 ReadWriteLock接口与ReentrantReadWriteLock类简介 390 17.3.4 ReentrantReadWriteLock读/写锁的具体使用 391 17.4 信号量的使用 393 17.4.1 Semaphore类简介 393 17.4.2 Semaphore类的具体使用 ...

    zookeeper分布式锁实例源码

    基于zookeeper的不可重入锁Shared Lock 举例,可重入锁Shared Reentrant Lock 举例,可重入读写锁Shared Reentrant ReadWriteLock 举例

    C#实现多线程的同步方法实例分析

    本文主要描述在C#中线程同步的方法。线程的基本概念网上资料也很多就...3. 读写锁(ReadWriteLock) 4. 系统内核对象 1) 互斥(Mutex), 信号量(Semaphore), 事件(AutoResetEvent/ManualResetEvent) 2) 线程池 除了以上

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    11.2.1 lock、readwritelock与condition 349 11.2.2 使用executor 357 11.2.3 并行collection简介 370 11.3 重点复习 373 11.4 课后练习 375 chapter12 通用api 377 12.1 日志 378 12.1.1 日志api简介...

    JavaExamples:存储库包含小型Java项目和示例,作为常见问题(例如设计模式,并发问题等)的解决方案

    使用了ReadWriteLock两个用于写和读的相关锁。 Writer线程: public void run() { while ( true ) { lock . writeLock() . lock(); try { int newValue = generateValue(); sharedObj . write...

    详解java多线程的同步控制

    同步控制是并发程序必不可少的重要手段,本文我们将通过重入锁、读写锁、信号量、倒计数器和循环栅栏以及他们的实例来介绍Java并发程序中的同步控制。 目录线程安全 Thread Safety重入锁 ReentrantLock读写锁 ...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第二阶段05讲、一个解释volatile关键字作用最好的例子.mp4 │ 高并发编程第二阶段06讲、Java内存模型以及CPU缓存不一致问题的引入.mp4 │ 高并发编程第二阶段07讲、CPU以及CPU缓存的结构,解决高速...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第二阶段05讲、一个解释volatile关键字作用最好的例子.mp4 │ 高并发编程第二阶段06讲、Java内存模型以及CPU缓存不一致问题的引入.mp4 │ 高并发编程第二阶段07讲、CPU以及CPU缓存的结构,解决高速...

    C#实现多线程的同步方法详解

    本文主要描述在C#中线程同步的方法。...读写锁(ReadWriteLock)4.系统内核对象1)互斥(Mutex),信号量(Semaphore),事件(AutoResetEvent/ManualResetEvent)2)线程池除了以上的这些对象之外实现线程同步的还可

    JAVA核心知识点整理(有效)

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................

Global site tag (gtag.js) - Google Analytics