java简单实现一个缓存_java简单实现缓存的三种方法
package com.tb.test;
import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class CachedTest {
// 第一种方法 用hashmap存 然后加锁get方法
// private HashMap cached = new HashMap();
//
// public synchronized Object get(String user){
//Object value=cached.get(user);
// if( value== null){
//
// value ="sss"; //实际上是从数据库中读取
// cached.put(user, value);
// }
//
// return value;
// }
// 第二种方法是用ConcurrentHashMap
// private ConcurrentHashMap cached= new
// ConcurrentHashMap();
//
// public Object get(String user){
//Object value=cached.get(user);
// if(value == null){
//
// value ="sss"; //实际上是从数据库中读取
// cached.put(user, value);
// }
//
// return value;
//
//
// }
// 第三种 用hashmap 加读写锁
private HashMap cached = new HashMap();
private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
public Object get(String user) {
readWriteLock.readLock().lock();
Object value = null;
try {
value = cached.get(user);
if ( value == null) {
readWriteLock.readLock().unlock();
readWriteLock.writeLock().lock();
try {
if(value == null){
value = "aa"; // 实际上从数据库读取
cached.put(user, value);
}
} finally {
readWriteLock.writeLock().unlock();
}
readWriteLock.readLock().lock();
}
} finally {
readWriteLock.readLock().unlock();
}
return value;
}
}
java简单实现一个缓存_java简单实现缓存的三种方法相关推荐
- java中三种方法_Java文件I/O的三种方法
Java文件I/O的三种方法 RandomAccessFile是不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(Data ...
- java当前时间_java 获取当前时间的三种方法
总结java里面关于获取当前时间的一些方法 System.currentTimeMillis() 获取标准时间可以通过System.currentTimeMillis()方法获取,此方法不受时区影响, ...
- java 不知道类名_Java 中获取类名的三种方法,你知道几种?
之前我们分享过Java高级篇--深入浅出Java类加载机制这篇文章,今天来带你了解获取类名的三种方法. 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里 ...
- java json的使用方法_JAVA编写JSON常用的三种方法
JAVA编写JSON常用的三种方法 Szx • 2019 年 11 月 15 日 1.jsonlib需要引入的包也多,代码也相对多一些. 2.Gson:谷歌的 3.FastJson:阿里巴巴的,这几个 ...
- java 终止方法_Java中终止线程的三种方法
Java中终止线程的三种方法 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经 ...
- java 取名字_Java 中获取类名的三种方法,你知道几种?
之前我们分享过Java高级篇--深入浅出Java类加载机制这篇文章,今天来带你了解获取类名的三种方法. 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName()返回的是虚拟机里面 ...
- java i o中文版_Java文件I/O的三种方法
摘要:之前在面试中被问到过两次Java中文件读入输出怎么写,当时只记得一个大概,没有办法很清晰的说出一个条理,今天特地看出总结了一下这方面的内容,想要写出来给大家分享.首先文件读入输出流常用有三种:F ...
- java web登录状态保持_java web用于保持状态的4种方法
方法一:网址重写 通过在url地址后面添加若干的token作为查询字符串来实现.token的值一般为 键=值 url?key1=value1&key2=value2&...&k ...
- java中break什么意思_Java中break的第三种用法说明
在Java中,break语句有三种用法,第一种是用于终止switch语句中的语句序列,第二种是用于退出循环,然而第三种是用作goto语句的"文明"形式! 我们知道,goto语句会破 ...
- java数组怎么全部初始化_Java数组初始化,这三种方式有什么区别?
首先因为数组初始化要使用的时候必须确定数组的长度,也就是说数组的长度是不可变的. 在JAVA中创建数组有两种方式 : (1)静态创建 如 Object[] arr1 = {"a", ...
最新文章
- TCP的协议特点(对于《Linux高性能服务器编程》的部分摘录以及自己的部分见解)
- orb-slam评价
- 百度地图API使用之实现定位
- ant指定servlet版本_Spring工具 - AntPathMatcherUrlPathHelper(针对URL进行处理)
- bash 2_quantize.sh遇到错误2_quantize.sh: line 7: 29380 Segmentation fault解决方法
- python 预测算法_Python 与金融数据使用机器学习算法预测交易策略
- 【模拟】Ground Defense
- 4-[函数]- 独立功能的代码块
- 滴滴、小米启动造车,特斯拉的护城河还能守多久?
- Python ln_虚拟机中单机Spark (Python版)安装
- aes没有密码能解密吗_如果人体基因密码被破译,人类平均寿命能提高到1000岁吗?...
- excel最常用的八个函数
- 成功破解电信限制路由器方法
- 学生电影网页设计作品 影视主题学生网页制作 简单网页设计作业 静态影视介绍网页模板
- win10计算机初始输入法,Win10默认输入法怎么设置?
- AndroidStudio软件用法详细说明
- 如何高效的学习高等数学
- 直线相交的交点(Line-Line Intersection)
- 小米项目实习踩坑集合
- 【英语词组】恋恋不忘Day 3-4
热门文章
- 黑马程序员最新Python教程——第一阶段(3)第二阶段(1)
- Android作业四
- java udp发送速率_项目总结22:Java UDP Socket数据的发送和接收
- python处理access数据库教程_python是如何操作access数据库的,python 数据清洗
- 数据结构课程设计---图书管理系统
- java web程序设计郭_Java Web程序设计-(第2版)
- 计算机存储器的分类图片,存储器分类及各自特点有哪些
- 《自己动手写操作系统》(一)
- eoLinker-API_Shop_知识类API调用的代码示例合集:驾考题库、ISBN书号查询、万年历查询等...
- [Excel图表实战技巧精粹].Excel.Home.扫描版 百度云