`
Johnny_001
  • 浏览: 2030 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

读写锁技术

阅读更多
功能:实现数据可以同时被多个线程读取,数据的读与读之间实现互斥,数据的读写之间互斥。


1、定义一个缓冲区,用于将从数据库读得的数据存入其中。


private Map<String,Object> cache = new HashMap<String,Object>();

2、定义一个读写锁

private ReadWriteLock rwl = new ReentrantReadWriteLock();


3、定义读取数据的方法getData(),代码如下:

public synchronized Object getData(String key)  {
    rwl.readLock().lock();
    /*把读锁锁上,不能向其中写入数据*/
 
   Object value = null;
 
   try {
    value = cache.get(key);
    /*向缓存区里面取数据,如果取到,直接返回*/
  
    if(value == null) {
   
     rwl.readLock().unlock();
     rwl.writeLock().lock();
    /*把读锁释放,把写锁锁上,可写不可读*/

    try {
       value = &quot;select xx from xxx&quot;;
       /*从数据库里面去读取数据*/
    }  finally {
        rwl.writeLock().unlock();
       }
    }
  } finally {
     rwl.readLock().unlock();
     /*将读锁释放*/
    }
   return value;
}




2
2
分享到:
评论

相关推荐

    标准C写的线程池和读写锁

    在IT领域,线程池和读写锁是两种重要的多线程编程技术,尤其是在Linux操作系统中。本项目提供了一个标准C语言实现的线程池,同时整合了读写锁的实现,这对于提升程序的并发性能和资源管理具有重要意义。 线程池是一...

    易语言读写锁模块源码.zip

    在这个"易语言读写锁模块源码.zip"压缩包中,包含的"易语言读写锁模块源码.rar"文件很可能是易语言编写的读写锁实现的源代码。通常,这样的源码会包含以下组成部分: 1. **数据结构**:定义读写锁的数据结构,这...

    易语言-易语言读写锁

    在易语言中,读写锁(Read-Write Lock)是一种非常重要的同步机制,用于管理对共享资源的并发访问。在多线程编程中,读写锁能有效地提高程序的并发性能,尤其是在多个线程读取同一数据,而少有写入操作的情况下。 ...

    经典Java多线程与并发库高级应用

    除了上述提到的技术点,本教程还会涉及到ThreadLocal类、线程范围内共享变量、多个线程之间共享数据的方式、java5原子性操作类的应用、Callable与Future的应用、线程锁技术、读写锁技术等内容。这些技术点都旨在帮助...

    面试必问并发编程高级面试专题-09.rar

    Java的`ConcurrentHashMap`、`CopyOnWriteArrayList`等并发容器使用了分段锁或读写锁技术,能够在不引入全局锁的情况下保证并发安全。 综上所述,本面试专题涵盖了并发编程中的诸多关键知识点,包括但不限于并发...

    硬盘扇区读写技术

    随书附送光盘内容一览表 光盘目录 对应的书目录 目标文件名 程序功能 09\JIAN-H 第9章的9.1 JIAN-H.EXE 建立汉字库头文件 09\HZCALL 第9章的9.2 HZCALL.OBJ 显示...35\HHDLOCK 第35章的35.4 HHDLOCK.EXE 硬盘锁(汉显)

    iOS线程读写安全

    本文将深入探讨iOS中的线程读写安全,包括读写锁和栅栏函数的使用,以及如何保证公共资源的安全。 首先,我们要理解线程安全的基本概念。线程安全是指当多个线程访问同一块资源时,代码能够正确地处理并发情况,...

    智能锁写锁工具全国

    在IT行业中,智能锁是一种利用现代技术,如物联网、生物识别和无线通信,来提供安全性和便利性的设备。"智能锁写锁工具全国"可能是针对这类设备开发的一款软件工具,旨在帮助用户管理和控制智能锁的功能。这样的工具...

    ID卡读写软件与资料(含读写协议)

    ID卡读写软件与资料是涉及智能卡技术领域的一个重要主题,尤其是对于ID卡的管理和应用。ID卡,全称为身份识别卡,通常用于身份验证、门禁控制、考勤系统等多种场合。在这个主题中,我们主要关注的是如何通过特定的...

    XCRF-500系列读写器技术参考手册

    ### XCRF-500系列读写器技术参考手册知识点总结 #### 一、引言 - **手册概述**:XCRF-500系列读写器技术参考手册是一份详细介绍XCRF-500系列读写器如何与上端PC通讯的数据传输协议及其API接口函数的手册,对于开发...

    基于c++内存池,共享内存和信号量实现高速的进程间通信队列,单进程读单进程写无需加锁,多进程读多进程写用信号量集实现读写锁

    4. **读写锁**:读写锁是多线程编程中的一种同步机制,它可以允许多个读取者同时访问资源,但只允许一个写入者。在多进程环境中,信号量集可以模拟读写锁的效果。当写入发生时,所有信号量都被占有,阻止其他读写...

    rockey2 读写狗工具

    标题中的“rockey2 读写狗工具”指的是飞天诚信公司生产的Rockey2加密锁,也被称为USB保护设备或硬件密钥。这种设备主要用于软件授权管理,通过插入USB接口来验证用户是否有权运行特定的软件。读写狗工具则是用于与...

    IC卡读写软件V1.9.rar

    通过这些特性,IC卡读写软件V1.9不仅适用于专业技术人员,也适合普通用户。无论是个人资料管理、企业数据安全,还是公共服务领域的卡片操作,都能找到合适的应用场景。随着物联网技术的发展,智能卡的应用越来越广泛...

    1-SPI FLASH基本读写测试(ISSI解锁).rar

    5. "doc":文档目录,通常包含项目的使用指南、API参考或其他技术文档,帮助用户理解和使用项目。 在这个实验或项目中,开发者将学习如何配置IMXRT1052的SPI接口,设置适当的时钟速度和数据模式,然后利用库函数...

    t5557读写软件

    随着技术的发展,射频卡在诸多领域如电子商务、智能社区、公共交通、身份验证等方面得到了广泛应用。本文介绍了一款专门针对ATMEL公司的T5557射频卡的读写软件的设计与实现。 #### 二、T5557射频卡简介 T5557是...

    多读单写锁演示程序

    在这个多读单写锁演示程序中,开发者可能通过创建和管理读写锁对象,模拟了不同线程对共享资源的读写操作,展示了如何在Windows环境下有效利用读写锁来实现线程同步,提高并发性能。通过学习和理解这个程序,你可以...

    C#多线程读写sqlite

    在C#编程中,多线程技术常用于提高应用程序的执行效率,特别是在处理数据库操作时。SQLite是一款轻量级、嵌入式的关系型数据库,它广泛应用于桌面应用、移动设备和Web开发。当多线程环境对SQLite进行读写操作时,...

    彻底理解Java中的各种锁.pdf

    本文将详细介绍Java中包括乐观锁、悲观锁、自旋锁、可重入锁、读写锁等多种锁机制的概念、特点、应用场景及其优化技术。 1. 乐观锁与悲观锁 乐观锁与悲观锁反映了对数据并发访问策略的不同预期。乐观锁假设数据通常...

Global site tag (gtag.js) - Google Analytics