文档章节

缓存实例的不可变类

非著名程序员Bla
 非著名程序员Bla
发布于 2016/05/18 18:04
字数 294
阅读 28
收藏 0
public class CacheImmutale {
//长度
private static int MAX_SIZE=10;
//使用数组缓存实例,最多能缓存10实例
private static CacheImmutale[] cache=new CacheImmutale[MAX_SIZE];
//记录缓存的位置
private static int pos=0;
//名称
private final String name;
public CacheImmutale(String name)
{
  this.name=name;
}
public String getName() {
return name;
}
public static CacheImmutale valueOf(String name)
{
//首先遍历数据中已经缓存的实例对象
for(int i=0;i
{
if(cache[i].getName().equals(name)){
//如果有,就return当前CacheImmutale对象,就不用重新new 了,节省系统资源
return cache[i]; 
}
}
//如果缓存实例的数组满了,就进行覆盖,将最新的实例放到数组的第一个位置,一边能起一个找到,提升系统性能
if(cache.length==MAX_SIZE){
cache[0]=new CacheImmutale(name);
    //设置一下位置 ,用作最后的return
pos=1;
}else{
//如果没满
cache[pos++]=new CacheImmutale(name);//cache[pos++] //弄完后再加加的
}
return cache[pos-1];
}
public boolean equals(Object obj){
if(this==obj)
{
return true;
}
if(obj!=null && obj.getClass()==CacheImmutale.class)
{
CacheImmutale cach=(CacheImmutale)obj;
return name.equals(cach.getName());
}
return false;
}
public static void main(String[] args) {
CacheImmutale cacheOne=new CacheImmutale("Test");
CacheImmutale cacheTwo=new CacheImmutale("Test");
//如果返回true,表明系统没有重新创建一个新的实例,而是用缓存中的实例
System.out.println(cacheOne.equals(cacheTwo));
}
}

本文转载自:http://blog.csdn.net/yangrunkangbla/article/details/45134283

共有 人打赏支持
非著名程序员Bla
粉丝 15
博文 75
码字总数 0
作品 0
合肥
后端工程师
私信 提问
JAVA中具有实例缓存的不可变类

不可变类的实例的状态不会变化,这样的实例可以安全的被其他与之关联的对象共享,还可以安全的被多个线程共享。 为了节省内存空间, 优化程序的性能, 应该尽可能的重用不可变类的实例,避免...

moz1q1
2014/11/03
0
0
Java中final修饰符

final关键字可用于修饰类、变量和方法表示不可见,final修饰变量时,表示该变量一旦获得了初始值就不可被改变。 1.final修饰的成员变量必须由程序员显示的指定初始化值,final修饰类变量:必...

西红柿的眼泪
2016/07/07
26
0
Effective Java 第三版——17. 最小化可变性

Tips 《Effective Java, Third Edition》一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8...

M104
01/08
0
0
Effective Java(1):静态工厂方法代替构造器

创建类的实例最常见的是new 除此外还可以使用静态工厂方法,来封装实例的细节,并且能控制实例的数量,减轻jvm的堆栈中的压力。静态工厂方法最主要的特点是:每次被调用的时候,不一定要创建...

_Roger_
2015/12/12
155
0
为什么Java要把字符串设计成不可变的

原文出处: Hollis(@HollisChuang) 是Java中一个不可变的类,所以他一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改。不可变类有很多优势。本文总结了为什...

刘星石
2016/03/08
5
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 其实我在地板也睡不着

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @witt-z :分享歌词: 阴天 在不开灯的房间,当所有思绪都一点一点沉淀。 分享莫文蔚的单曲《阴天》: 《阴天》- 莫文蔚 手机党少年们想听歌,...

小小编辑
11分钟前
11
3
微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
3
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部