`
747017186
  • 浏览: 331375 次
社区版块
存档分类
最新评论

java缓存器的编写

 
阅读更多

前一段学习过java当中readWriteLock的使用,运用所学编写一个缓存器。

package thread;

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

public class CacheTest {
	private Map<String, Object> cache = new HashMap<String, Object>();
	public static void main(String[] args) {
		
	}
	
	private ReadWriteLock rwl = new ReentrantReadWriteLock();
	/**
	 * 如果多个线程来读取缓存可以同时读取,但是写入缓存的必须是一个 
	 * @param key
	 * @return
	 */
	public Object getDate(String key) {
		rwl.readLock().lock();//线程加载读锁
		Object value = null;
		try {
			value = cache.get(key);
			if(value == null) {//如果缓存为空
				rwl.readLock().unlock();//释放读锁
				rwl.writeLock().lock();//加载写锁
				try {
					if(value == null) {//如果多个线程同时来写,则一个线程写成功了,另外写锁的线程不需要操作
						value = "查询数据库获取数据!";
						cache.put(key, value);//放入缓存
					}
				} finally {
					rwl.writeLock().unlock();//释放写锁
				}
				rwl.readLock().lock();//加上读锁
			}
		} finally {
			rwl.readLock().unlock();//释放读锁
		}
		return value;
	}
}

 以后对于读写锁有更多的应用,缓存是必不可少的。

分享到:
评论

相关推荐

    java缓存数据

    本文将深入探讨“java缓存数据”这一主题,结合提供的标签“源码”和“工具”,我们将从源代码层面和常用工具角度来解析Java缓存的相关知识。 首先,Java缓存数据的基本原理是将频繁访问的数据存储在内存中,避免...

    java缓存工具SimpleCache.zip

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作! 1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。 3. 支持缓存数据分区规则...

    一个基于ajax和java缓存的聊天室

    "一个基于Ajax和Java缓存的聊天室"这个标题揭示了该项目的核心技术栈,即使用Ajax进行实时通信,以及Java作为后端处理数据并实现缓存功能,构建了一个在线聊天平台。Ajax(Asynchronous JavaScript and XML)是一种...

    java编写bbs源码

    Java 编写的 BBS 源码是一种基于 Java 语言实现的在线讨论平台,它提供了用户交流、发帖、回帖、搜索等功能。这个论坛系统是完全由 Java 语言构建的,利用了 Java 的面向对象特性、多线程以及网络编程能力。下面将...

    DiskLruCache磁盘缓存java源码

    《DiskLruCache:Java实现的磁盘缓存解析》 在移动开发,尤其是Android应用开发中,数据缓存是优化用户体验的关键技术之一。DiskLruCache是一款基于磁盘的缓存库,由Jake Wharton编写,用于存储关键数据到本地文件...

    java中的缓存.pdf

    总结起来,文档深入探讨了Java中缓存技术的多个方面,包括Hibernate框架中的缓存使用、不同缓存策略的实现、本地缓存与分布式缓存的区别和配置、以及Java缓存技术在企业应用中的实际应用。这些知识对于Java开发者来...

    高速缓存实现源码

    在Java编程环境中,高速缓存的实现可以极大地提升系统响应速度,尤其是在处理高并发场景时。本项目通过源码实现了一个简单的高速缓存,展示了其在多线程并发环境下的性能优势。 在Java中,高速缓存的实现通常依赖于...

    java编写源代码简易聊天系统

    Java 编写的简易聊天系统是一种基于网络编程技术实现的通信工具,主要利用了Java的Socket编程接口和多线程机制。下面将详细讲解这个系统的实现原理、关键技术和涉及的Java概念。 1. **网络编程基础** 在Java中,...

    Java编写的网页浏览器

    Java编写的网页浏览器是一个独特的项目,它展示了Java作为一种多用途编程语言的能力,不仅可以用于服务器端开发,还可以构建桌面应用程序,如浏览器。对于初学者来说,这样的项目提供了深入了解Java GUI(图形用户...

    java和数据库编写的图书管理系统,可用于数据库课程设计

    开发者需要编写SQL语句并使用PreparedStatement来防止SQL注入攻击,同时利用Connection、Statement和ResultSet等对象进行数据操作。 图书管理系统的功能通常包括:图书信息管理(添加、修改、删除图书信息)、用户...

    Android-一种用Java编写的Android强类型缓存GraphQL客户端

    本文将深入探讨一个用Java编写的Android强类型缓存GraphQL客户端——Apollo,以及它如何优化应用程序的性能和用户体验。 首先,我们要了解什么是GraphQL。GraphQL是一种由Facebook推出的API设计语言,它的核心思想...

    java编写的考试系统

    Java编写的考试系统是一款基于Java图形界面编程和Client-Server架构的应用程序,旨在提供一个高效、可靠的在线测试环境。在这款系统中,开发者利用Java的强大功能来设计用户友好的交互界面,同时实现了服务器端的...

    java编写的条形码生成器

    Java编写的条形码生成器是一种实用的工具,它允许开发者通过编程方式生成条形码图像,以便在各种应用场景中使用,如商品包装、库存管理、物流追踪等。条形码作为一种快速、准确的数据录入方式,已经广泛应用于现代...

    spleen:Java缓存库

    脾Java缓存库Spleen是用Java编写的存储缓存库,它允许存储内存大小限制以及每个存储数据的超时限制。 脾脏提供两种存储类型,即使用简单线程或多线程删除的观察者。 简单的名称空间启动一个单独的线程来检查要删除的...

    JAVA-缓存行对齐测试方法

    在Java中,理解并利用缓存行对齐可以帮助我们编写更高效、性能更优的代码。 在"JAVA-缓存行对齐测试方法"中,我们可能涉及到以下关键知识点: 1. **缓存行的工作原理**:CPU缓存设计为分层结构,如L1、L2、L3等,...

    java编写的人事管理系统

    《Java编写的人事管理系统详解》 Java作为一种广泛应用于企业级应用开发的语言,其在人事管理系统中的应用具有高效、稳定和可扩展性强等特点。人事管理系统作为企业管理的重要组成部分,它涵盖了员工信息管理、考勤...

    使用Java编写Oracle存储过程.pdf

    在介绍使用Java编写Oracle存储过程之前,我们首先需要了解存储过程的基本概念以及使用它们的好处。存储过程是存储在数据库中的一段预编译和优化过的代码,可以包含复杂的业务逻辑。它们在第一次执行后被编译并存储在...

    Java对象缓存系统的实现,实现了LRU算法,并可以进行集群同步

    **Java缓存实现** 在`Cache.java`文件中,可能定义了基础的缓存接口或抽象类,它规定了缓存的基本操作,如put、get、remove等。而`LRUCache.java`作为具体实现,继承或实现了`Cache.java`,并加入了LRU策略来管理...

    用java编写的dns内含源码和测试用例

    本资源提供了一组用Java编写的DNS库,包括源代码和测试用例,对于学习和理解Java如何实现DNS查询以及进行相关开发非常有帮助。 1. **源码分析**: - `jnamed.java`:这可能是实现DNS服务器的核心文件,可能包含了...

Global site tag (gtag.js) - Google Analytics