黑马程序员技术交流社区

标题: 请教多线程下的单例问题 [打印本页]

作者: 李培根    时间: 2012-12-4 11:05
标题: 请教多线程下的单例问题
多线程下的单例

//饿汉式:不存在安全隐患。
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;
}
}


作者: 冯盼    时间: 2012-12-4 11:54
private static final Single s = new Single();
这个地方的final加与不加都是可以的,都是正确的。
作者: 李培根    时间: 2012-12-4 12:32
冯盼 发表于 2012-12-4 11:54
private static final Single s = new Single();
这个地方的final加与不加都是可以的,都是正确的。 ...

这个我知道,加上了有什么好处呢?
作者: 戴进飘    时间: 2012-12-4 12:52
final型的引用是不能被修改的
作者: 梁胜海    时间: 2012-12-4 12:56
final加不加无所谓,加上一个final的好处就是标识这个常量只能有一个地址。
算是标识作用。为了代码的可阅读性。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2