对象安全构造

一、对象安全构造

(1)在对象构造期间,不要公布this引用


(2)不要隐式地暴露“this”引用


(3)不要从构造函数内启动线程
   a)在构造函数中启动线程时,构造函数还未执行完毕,不能保证此对象已经完全构造
   b)如果在启动的线程中访问此对象,不能保证访问到的是完全构造好的对象

二、对象安全发布

(1)Java中存在三种对象

   a)不变对象:对象状态创建后不能再修改,对象的所有域为final,对象是正确构造的
   b)基本不变对象:不满足不变对象的约束,但是初始化后不再变化
   c)可变对象:不满足上述不变对象和基本不变对象的约束
(2)安全发布技术

   a)即确保对象引用和状态对其他线程正确可见
   b)方式
      静态初始化器初始化对象引用
      将引用存储到volatile域
      将引用存储到正确创建对象的final域
      将引用存储到由锁正确保护的域
(3)三种对象安全发布方式

   a)不变对象:任何形式机制发布
   b)基本不变对象:保证安全发布即可
   c)可变对象:不仅要保证安全发布,而且要确保对象状态的正确改变(即用锁或其他方式,保证对象状态的正确改变)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值