知识大全 Java程序性能优化-单例模式(3)
Posted 知
篇首语:一寸光阴一寸金,寸金难买寸光阴。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java程序性能优化-单例模式(3)相关的知识,希望对你有一定的参考价值。
Java程序性能优化-单例模式(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
单例模式( )
通常情况下 用以上方式实现的单例已经可以确保在系统中只存在唯一实例了 但仍然有例外情况 可能导致系统生成多个实例 比如 在代码中 通过反射机制 强行调用单例类的私有构造函数 生成多个单例 考虑到情况的特殊性 本书中不对这种极端的方式进行讨论 但仍有些合法的方法 可能导致系统出现多个单例类的实例
一个可以被串行化的单例
public class SerSingleton implements java io Serializable
String name;
private SerSingleton()
System out println( Singleton is create )
//创建单例的过程可能会比较慢
name= SerSingleton ;
private static SerSingleton instance = new SerSingleton()
public static SerSingleton getInstance()
return instance;
public static void createString()
System out println( createString in Singleton )
private Object readResolve() //阻止生成新的实例 总是返回当前对象
return instance;
测试代码如下
@Test
public void test() throws Exception
SerSingleton s = null;
SerSingleton s = SerSingleton getInstance()
//先将实例串行化到文件
FileOutputStream fos = new FileOutputStream( SerSingleton txt )
ObjectOutputStream oos = new ObjectOutputStream(fos)
oos writeObject(s)
oos flush()
oos close()
//从文件读出原有的单例类
FileInputStream fis = new FileInputStream( SerSingleton txt )
ObjectInputStream ois = new ObjectInputStream(fis)
s = (SerSingleton) ois readObject()
Assert assertEquals(s s )
使用一段测试代码测试单例的串行化和反串行化 当去掉SerSingleton代码中加粗的readReslove()函数时 以下测试代码抛出异常
junit framework AssertionFailedError: expected:javatuning ch singleton
serialization SerSingleton@ ee
but was:javatuning ch singleton serialization SerSingleton@ fe c
说明测试代码中s和s 指向了不同的实例 在反序列化后 生成多个对象实例 而加上readReslove()函数的 程序正常退出 说明 即便经过反序列化 仍然保持了单例的特征 事实上 在实现了私有的readReslove()方法后 readObject()已经形同虚设 它直接使用readReslove()替换了原本的返回值 从而在形式上构造了单例
注意 序列化和反序列化可能会破坏单例 一般来说 对单例进行序列化和反序列化的场景并不多见 但如果存在 就要多加注意
返回目录 Java程序性能优化 让你的Java程序更快 更稳定
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
J ME移动开发实战教学视频
Visual C++音频/视频技术开发与实战
Oracle索引技术
cha138/Article/program/Java/gj/201311/27835相关参考
Java程序性能优化-单例模式(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-代理模式(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-装饰者模式(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java程序性能优化-观察者模式(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java程序性能优化-代理模式(7) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-代理模式(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-代理模式(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-代理模式(4) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-代理模式(5) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-代理模式(6) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!