单子模式修改。进来看看。
~有事情要讨论。
~大家都知道单子模式吧。
单子模式下。是需要用到 synchronized的。
但是 他比 非同步慢 100陪 可能
~但 只有第一次调用该方法才需要 同步 一旦 初始化 完成同步操作 就完全没必要了。。
~大家觉得应该怎么去 改改。
就好比
private static Resoure res=null;
public static synchronized Resource getResource(){
if(res==null){
res = new Resource();
}
return res;
}
这个方法在多线程情况下可能 有线程同时到 if(res==null)这个上面,当然我们用到了 synchronized 不会有问题,但是速度非常慢。况且 我们只需要第一调用才用到同步,一旦res初始化后同步操作 就完全没必要了。
应该如何修改。
--------------------------------
以下内容为自动编辑的内容,并非楼主的发贴内容,此仅用于显示而已,并无任何其他特殊作用
楼主【liubowen】截止到2008-08-04 16:03:42的历史汇总数据(不包括此帖):
发帖的总数量:4 发帖的总分数:110 每贴平均分数:27
回帖的总数量:2 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:1 结贴的总分数:20
无满意结贴数:0 无满意结贴分:0
未结的帖子数:3 未结的总分数:90
结贴的百分比:25.00 % 结分的百分比:18.18 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
楼主该结一些帖子了
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=liubowen
[解决办法]
单态有两种形式:
1.饿汉式:
public class Singleton{
// 在自己内部定义一个自己的实例
// 注意,这个是private 只供内部调用
private static Singleton instance = new Singleton();
//将构造函数设为私有
private Singleton(){
}
// 静态工厂方法,提供一个供外部使用得到对象的静态方法
public static Singleton getInstance(){
return instance;
}
}
2. 懒汉式:
public class Singleton{
private static Singleton instance = null;
private Singleton(){
}
public static synchronized Singleton getInstance (){
if(instance==null)
instance = new Singleton();
return instance;
}
}
[解决办法]
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
这是另一种单例模式。
[解决办法]
第一种:
public class Singleton {
private volatile static final Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){
if(instance==null) {
synchronized(Singleton.class) {
if(instance==null)
instance = new Singleton();
}
}
return instance;
}
}
第二种:
public class Singleton {
private Singleton(){}
private static class SingletonInner {
static Singleton instance = new Singleton();
}
public static Singleton getInstance(){
return SingletonInner.instance;
}
}
两种方法各有优缺点,看楼主自己选择!