在组合对象中如果每个组件都已经是线程安全的,是否需要再加一个额外的“线程安全层“,需要视情况而定。

final可以修饰未复制的属性,只要在静态代码块或者构造函数中赋值了即可。

独立的状态变量

我们还可以将线程的安全性委托给多个状态变量,只要这些变量是彼此独立的,即组合而成的类并不会在其包含的多个状态变量上增加任何不变性条件。

如果是状态变量之间存在着某些不变性条件时就没这么简单了。比如一个类中有两个属性,要满足的条件是一个属性的值要小于另一个属性的值。这是比较典型的先检查后执行的操作,如果没有足够的加锁机制来保证操作的原子性,这种委托不足以实现线程的安全性。在这种情况下,每个类必须提供自己的加锁机制以保证这些复合操作都是原子操作。

仅当一个变量参与到包含其他状态变量的不变性条件时,才可以声明为volatile。

比如要返回一个点的坐标,需要获取坐标x的值,以及坐标y的值,这样的话可能导致看到不一样的值:这个点从来都没有出现这个坐标上。

最新文章

  1. angularjs学习总结 详细教程(转载)
  2. url中参数以及callback后面的串
  3. 仓鼠找sugar(洛谷 3398)
  4. UEFI双硬盘安装win8.1和Ubuntu14.04
  5. Perl 内部结构详解
  6. NSS_08 extjs表单验证
  7. UVA 11354 Bond(最小瓶颈路+倍增)
  8. 熬之滴水成石:Spring--精简的J2EE(7)
  9. launchMode传递参数注意startActivityForResult
  10. Intent的概念及应用(一)
  11. python 中文编码
  12. BZOJ 4407: 于神之怒加强版 [莫比乌斯反演 线性筛]
  13. oracle根据身份证号码 计算年龄、性别
  14. JWT认证
  15. 小程序布局中class='container'的bug
  16. php webservice实例(转载)
  17. JS中如何处理多个ajax并发请求?
  18. 20155222卢梓杰 《Java程序设计》第1周学习总结
  19. 【前端学习笔记04】JavaScript数据通信Ajax方法封装
  20. 一种基于匹配回朔的 css3 选择器引擎实现

热门文章

  1. Java高级架构师(一)第15节:带查询的分页、修改和删除页面
  2. 解决百度 ueditor v1.4.3 编辑器上传图片失真的bug?
  3. html5页面中 触发 拨打电话、发短信 的方式
  4. 【java】字符串的反转
  5. VisualSVN设置提交时必须输入log信息
  6. Oracle API Gateway SOAP到REST协议转换
  7. 微信跳一跳 可以直接更改分数, POST 请求没有校验
  8. linux基础-第十八单元_nginx部署
  9. fedora25安装和docker-ce_清华源
  10. sublime 插件cssrem安装及配置