恶汉单例模式:
/**
恶汉单例模式,用空间换时间的思想进行对象的初始化,在多线程的情况下,故不存在线程安全问题。
*/
public class WickedManSingleTon {
private static WickedManSingleTon instance=new WickedManSingleTon();
private WickedManSingleTon() {
}
public static WickedManSingleTon getIntance() {
return instance;
}
}
懒汉模式:
/**
懒汉单例模式,用时间换空间的概念,实例化单例对象,在多线程的情况下,存在线程安全的问题。
*/
public class LasyManSingleTon {
private static LasyManSingleTon instance=null;
private LasyManSingleTon() {
}
public static LasyManSingleTon getInstance() {
if(instance==null) {
instance=new LasyManSingleTon();
}
return instance;
}
}
/**
已经非空了,会被直接拿出来用,这样的话,就会出现异常。这个就是著名的DCL失效问题。
*/
public class DCLInstance {
// 手写双检索
private static DCLInstance instance = null;//优化采用volatile
private DCLInstance() {
}
public static DCLInstance getInstance() {
if (instance == null) {
// 同步操作
synchronized (DCLInstance.class) {
if (instance == null) {
// 多线程环境下可能会出现问题的地方
instance = new DCLInstance();
}
}
}
return instance;
}
}
/**
*/
public class InerClassMakeIntance {
private static InerClassMakeIntance instance =null;
private InerClassMakeIntance() {
}
public static InerClassMakeIntance getInstance() {
return InerInstance.t1;
}
private static class InerInstance {
private static InerClassMakeIntance t1 = new InerClassMakeIntance();
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。