IBM TSM数据存储与备份管理解决方案
2008-07-27 13:31
330 查看
package com.zzq.singleton;
/**
* Double-check Locking的模式
* @author zhiqiang.zhu
* @version $Id: Singleton.java,v 0.1 2010-9-3 下午02:41:12 zhiqiang.zhu Exp $
*/
public class Singleton {
/**
* volatile类型的变量能够保持多线程并发访问此变量的同步问题
* 但是只有JDK1.5以上版本才能正常使用。
* JDK1.4之前的许多JVM,使用volatile会导致双重检测加锁失效
*/
private volatile static Singleton instance = null;
private Singleton() {
}
/**
* 获取一个单实例(用双重锁定方法)
* @return Singleton单实例
*/
public static Singleton getInstance() {
if (null == instance) {
//synchronized(Singleton.class) 这种锁发会把所有基于
//Singleton.class产生的实例对象都堵塞住(阿玺的原话)
synchronized (Singleton.class) {
//线程锁定后再次判断实例是否创建
if (null == instance) {
instance = new Singleton();
}
}
}
return instance;
}
}
/**
* 外国资料:http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom
* 主要是运用了类JVM类加载器机制实现的
* @author zhiqiang.zhu
* @version $Id: Singleton.java,v 0.1 2010-9-3 下午03:00:57 zhiqiang.zhu Exp $
*/
class Something {
private Something() {
}
/**
* 加载Something时,首先要先加载LazyHolder
* @author zhiqiang.zhu
* @version $Id: Singleton.java,v 0.1 2010-9-3 下午03:14:54 zhiqiang.zhu Exp $
*/
private static class LazyHolder {
private static final Something INSTANCE = new Something();
}
public static final Something getInstance() {
return LazyHolder.INSTANCE;
}
}
/**
* Double-check Locking的模式
* @author zhiqiang.zhu
* @version $Id: Singleton.java,v 0.1 2010-9-3 下午02:41:12 zhiqiang.zhu Exp $
*/
public class Singleton {
/**
* volatile类型的变量能够保持多线程并发访问此变量的同步问题
* 但是只有JDK1.5以上版本才能正常使用。
* JDK1.4之前的许多JVM,使用volatile会导致双重检测加锁失效
*/
private volatile static Singleton instance = null;
private Singleton() {
}
/**
* 获取一个单实例(用双重锁定方法)
* @return Singleton单实例
*/
public static Singleton getInstance() {
if (null == instance) {
//synchronized(Singleton.class) 这种锁发会把所有基于
//Singleton.class产生的实例对象都堵塞住(阿玺的原话)
synchronized (Singleton.class) {
//线程锁定后再次判断实例是否创建
if (null == instance) {
instance = new Singleton();
}
}
}
return instance;
}
}
/**
* 外国资料:http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom
* 主要是运用了类JVM类加载器机制实现的
* @author zhiqiang.zhu
* @version $Id: Singleton.java,v 0.1 2010-9-3 下午03:00:57 zhiqiang.zhu Exp $
*/
class Something {
private Something() {
}
/**
* 加载Something时,首先要先加载LazyHolder
* @author zhiqiang.zhu
* @version $Id: Singleton.java,v 0.1 2010-9-3 下午03:14:54 zhiqiang.zhu Exp $
*/
private static class LazyHolder {
private static final Something INSTANCE = new Something();
}
public static final Something getInstance() {
return LazyHolder.INSTANCE;
}
}
相关文章推荐
- IBM TSM数据存储与备份管理解决方案
- IBM TSM数据存储与备份管理解决方案
- IBM——TSM数据存储与备份的管理
- VERITAS 数据存储管理备份解决方案
- 数据存储与备份管理解决方案
- IBM TSM数据集中备份解决方案
- IBM Tivoli Storage Manager 存储备份管理解决方案
- IBM TSM数据存储与备份管理解决方案
- 中国交通银行数据备份存储解决方案
- 解析IBM TSM管理软件 点亮智慧存储管理
- 如何利用网络附加存储设备(NAS)构建数据备份(本地及远程数据备份)、数据容灾解决方案
- 解析IBM TSM管理软件 点亮智慧存储管理
- IBM存储:DS4700+TS2900数据备份成功案例
- 主数据管理解决方案,IBM 仍是业界领军人
- 浅入浅出Oracle Spatial GeoRaster 10g影像数据管理(2)——物理存储
- spark解决方案系列--------1.spark-streaming实时Join存储在HDFS大量数据的解决方案
- 戴尔智能数据管理(IDM)解决方案的由来与侧重点
- 近期整理的关于数据存储和备份的一些资料
- 工作随笔——肆(利用Navicat管理MySql时关于较大数据备份导入问题)
- Mysql数据备份以及异地存储