`

用读写锁包装Map

 
阅读更多

public class ReadWriteMap<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 ReadWriteMap(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();
  }
 }
}

分享到:
评论

相关推荐

    Java集合框架详解

    当需要线程安全的HashMap时,可以通过Collections的synchronizedMap方法包装或使用ConcurrentHashMap来实现。 2. Hashtable:作为遗留类,Hashtable的使用场景与HashMap类似。不过,Hashtable是从Dictionary类继承...

    java面试讲题汇总-word可打印版

    55. ReadWriteLock和StampedLock用于读写并发控制,ReadWriteLock允许多个读取者,StampedLock提供了读写锁和乐观锁。 56. run()直接执行线程体,start()创建新线程并执行run()。 57. start()由系统调度执行run()...

    聊聊并发(4)深入分析ConcurrentHashMapJ

    相比`synchronized HashMap`或`Collections.synchronizedMap`包装的`HashMap`,`ConcurrentHashMap`通过分割锁和操作的粒度细化,实现了更高的并发性能。 1. **分段锁机制**:`ConcurrentHashMap`将整个哈希表分为...

    java为了性能需要做的26件事

    应探索更高效的同步机制,如使用锁分离、读写锁等技术。 - **字符串构建**:使用`StringBuilder`或`StringBuffer`代替字符串拼接,尤其是在多线程环境中,可以显著提升性能。 ### 4. **内存管理** - **避免使用`...

    JAVA并发编程实践.pdf

    - **ReadWriteLock**:读写锁,允许多个读取者同时访问资源,但写入者必须独占资源。 #### 3. 线程池 - **Executor框架**:提供了创建和管理线程池的功能。 - **ThreadPoolExecutor**:自定义线程池的核心类。 - **...

    java必备面试题

    1. 基本数据类型及其包装类:了解自动装箱拆箱的过程,比较它们的使用场景。 2. 集合框架:深入理解ArrayList、LinkedList、HashSet、HashMap等常见集合类的内部结构和操作效率。 3. 接口与抽象类:如List、Set、Map...

    Java面经.适用于校招

    - NDK(Native Development Kit)允许开发者用C或C++实现部分程序。 - JRE(Java Runtime Environment)是运行Java程序所必需的环境。 - JNI(Java Native Interface)是Java程序与本地(如C或C++)代码交互的接口。...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    包装类 优先级 引用 语言工具类库 容器类 集合 链表 map 工具类 系统类 日期类 数字类 字符串+正则 流 字符流 字节流 语言特性 继承 封装 多态 JVM 多线程与并发 GC机制 GC收集器类型 串行...

    各大互联网公司常见java面试题

    读写锁允许并发读取,写入独占。 23. **synchronized释放锁**:当同步代码块/方法执行完毕或遇到异常时,锁会自动释放。 24. **synchronized与Lock的区别**:synchronized是内置锁,开销小,自动释放;Lock是显式...

    【牛客网】Java开发校招面试考点汇总(附面试题和答案).pdf

    - Lock接口:提供比synchronized更灵活的锁机制,可实现条件锁、读写锁等。 7. Java面向对象编程 - 类和对象的区别:类是对象的模板,对象是类的具体实例。 - 多态性:指允许不同类的对象对同一消息做出响应。 ...

    java并发集合

    1. **ConcurrentHashMap**:线程安全的哈希映射表,它比synchronized的Hashtable或Collections.synchronizedMap()包装的HashMap有更高的并发性能。ConcurrentHashMap采用了分段锁(Segment)的设计,允许不同的段...

    黑马面试题总结

    - 使用`FileInputStream`和`FileOutputStream`来读写文件。 - 使用`BufferedReader`和`BufferedWriter`提高效率。 - **网络通信:** - 通过`Socket`实现客户端与服务器之间的通信。 - 使用`DatagramSocket`和`...

    Java面试题精选与解析.md

    - 使用`FileInputStream`和`FileOutputStream`类进行二进制文件的读写操作。 #### 七、JVM与内存管理 - **Java虚拟机的结构和工作原理**: - JVM主要由类加载器、运行时数据区(包括方法区、堆、栈等)、执行...

    javaapi_cn.rar_Java api文档

    例如,`FileInputStream`和`FileOutputStream`用于处理文件读写,`BufferedReader`和`PrintWriter`则用于文本数据的读写。 4. **java.net**:提供网络通信功能,如Socket和ServerSocket用于TCP连接,`URL`和`...

    CoreJava java基础教材

    - **集合框架**:介绍List、Set、Map等集合类型,以及ArrayList、LinkedList、HashSet、TreeSet、HashMap等实现类,和Iterator迭代器的使用。 - **反射**:动态获取类信息和操作对象的能力,通过`java.lang.Class`...

    Java中HashMap和Hashtable的区别浅析

    程序员需要在多线程场景下自行管理同步,例如使用`Collections.synchronizedMap()`方法包装HashMap。 - 相反,Hashtable是线程安全的,它的所有公共方法都由内置的锁机制进行了同步,因此在多线程环境下可以直接...

    Java虚拟机并发编程

    - **并发工具类**:如Collections.synchronizedMap()、ConcurrentUtils等,为普通集合提供线程安全的包装。 6. **线程池** - **ExecutorService**:Java 5引入的线程池接口,通过ThreadPoolExecutor进行实例化,...

    黑马程序员入学Java知识(精华总结)

    多线程安全问题是指多个线程对同一个数据进行访问和修改可能导致数据不一致的问题,解决方法包括同步代码块、同步方法、使用锁等。线程通信可以通过wait()、notify()、notifyAll()方法实现。 集合框架是Java提供的...

Global site tag (gtag.js) - Google Analytics