首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

单例模式,该怎么解决

2013-12-26 
单例模式 饿汉写法:public class Singleton {private Singleton(){}private static Singleton instance

单例模式
 

饿汉写法:
public class Singleton {
    private Singleton(){};
    private static Singleton instance = new Singleton();
    public static Singleton getInstance(){
        return instance;
    }
}
懒汉写法:
public class Singleton {
    private static Singleton uniqueInstance = null;
 
    private Singleton() {
           }
 
    public static Singleton getInstance() {
       if (uniqueInstance == null) {
           uniqueInstance = new Singleton();
       }
       return uniqueInstance;
    }
   
}

有区别吗 ,那个比较好。
 哥们,你又来送分了么 

[解决办法]
还要注意 synchronized  同步。 最近腰好没。  
[解决办法]
饿汉式(加载类时创建实例)的优点是速度和反应时间教懒汉式单例类稍好些,无需关注多线程问题、写法简单明了、能用则用。缺点是比较占用内存资源(欢迎后面的接着补充)

懒汉式(需要时才创建对象)的优点是延时加载、缺点是应该用同步,会有线程安全上的问题(需双重检查加锁-double-check,会影响性能,特别是高并发的情况下更加)
[解决办法]
饿汉初始化根本不会存在线程安全问题,但开销是个问题,因为懒汉模式的使用理念是"用时才初始化",饿汉模式则是"不管用不用都初始化",这本身是和业界流行的资源使用习惯相违背的.
推荐  单例线程安全问题
[解决办法]
原来还有这种区分,以前只知道第二种  长姿势了!单例模式,该怎么解决
[解决办法]

引用:
饿汉式(加载类时创建实例)的优点是速度和反应时间教懒汉式单例类稍好些,无需关注多线程问题、写法简单明了、能用则用。缺点是比较占用内存资源(欢迎后面的接着补充)

懒汉式(需要时才创建对象)的优点是延时加载、缺点是应该用同步,会有线程安全上的问题(需双重检查加锁-double-check,会影响性能,特别是高并发的情况下更加)

java中不要使用双重检查
[解决办法]
不加同步可能创建出多个实例呢,还是个单例吗?
假设2个线程吧,它们同时到达 if (uniqueInstance == null),假设第一个线程早一点点进去,执行 new Singleton();此时uniqueInstance 还为null,知道new Singleton()返回赋值给uniqueInstance 为止
但是在uniqueInstance 还为null的时候,第2个线程进来了,又创建了一个Singleton实例。此时第一个线程拿到了第一个Singleton实例,第2个线程覆盖了,拿到了第2个Singleton实例。
你不认为这样有问题吗?线程更多的情况下呢?
[解决办法]
请看CSDN Java常见问题专栏

稍微分析了http://blog.csdn.net/withiter/article/details/8140338

热点排行