黑马程序员技术交流社区

标题: 三目运算符是否能解决懒汉式的同步问题? [打印本页]

作者: szsycwb    时间: 2014-5-21 22:12
标题: 三目运算符是否能解决懒汉式的同步问题?
本帖最后由 szsycwb 于 2014-5-23 16:15 编辑

通常使用懒汉式都会同步线程,现在我想到一个不同步的语句,不知道是否可以。
代码如下:
  1. class Single  
  2.     {  
  3.        private static Single instance=null;
  4.        private Single(){}  
  5.        public static Single getInstance()  //通常要同步这个方法,但我使用三目运算符,简化if else语句
  6.        {  
  7.                return instance==null?(instance=new Single()):instance;
  8.        }   
  9.     }  
复制代码

作者: 赵洋洋    时间: 2014-5-21 22:26
可以这样用
作者: szsycwb    时间: 2014-5-23 16:14
经过测试原来不可以这样用,这样用也会出现线程安全问题
作者: 酱油炒饭    时间: 2014-5-23 21:41
路过瞅瞅长长知识~
作者: Mr._Strange    时间: 2014-5-24 17:50
本帖最后由 Mr._Strange 于 2014-5-24 17:53 编辑

你的这个问题我也想过,后来我向一位java老师请教过,三元运算符依旧会出现安全隐患,因为三元运算符也是一步步执行,先判断,再运行执行语句,它不是因为是一句话就可以一下执行完的,它也是分两次运算。所以,不可以的。
作者: 飘渺≮★耘    时间: 2014-5-24 20:44
一般来说if else的性能比三目运算符好




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