A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李培根 金牌黑马   /  2012-12-4 11:05  /  1425 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程下的单例

//饿汉式:不存在安全隐患。
class Single{
private static final Single s = new Single();//为什么加这个final,感觉加不加区别不大,私有化构造函数,不就是已经保证对象的唯一性了。因为final修饰的变量是一个常量,只能赋值一次?
private Single(){}
public static Single getInstance(){
  return s;
}
}
//懒汉式
class Single2{
private static Single2 s1 = null;
private Single2(){}
public static Single2 getInstance(){  
  if(s1==null){
   synchronized(Single2.class){
    if(s1==null)
     s1 = new Single2();   
   }
  }
  return s1;
}
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
private static final Single s = new Single();
这个地方的final加与不加都是可以的,都是正确的。
回复 使用道具 举报
冯盼 发表于 2012-12-4 11:54
private static final Single s = new Single();
这个地方的final加与不加都是可以的,都是正确的。 ...

这个我知道,加上了有什么好处呢?
回复 使用道具 举报
final型的引用是不能被修改的
回复 使用道具 举报
final加不加无所谓,加上一个final的好处就是标识这个常量只能有一个地址。
算是标识作用。为了代码的可阅读性。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马