博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java并发编程(十二)线程安全性的委托
阅读量:6923 次
发布时间:2019-06-27

本文共 423 字,大约阅读时间需要 1 分钟。

 

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

 

 

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

 

独立的状态变量

 

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

 

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

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

 

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

转载地址:http://sqkjl.baihongyu.com/

你可能感兴趣的文章
java中常见的IO体系
查看>>
storm java 编程思路
查看>>
大数据技术创新呈现“原创-开源-产品化”的阶梯格局
查看>>
spark combineByKey
查看>>
NMath矩阵分解的两种方式
查看>>
启动AVD时log提示“emulator-X disconnected! Cancelling 'X activity launch'!”
查看>>
10个最新手机美食APP界面设计欣赏
查看>>
SQL查找重复行
查看>>
关于加密、签名及证书
查看>>
Android之service探究
查看>>
ASP.NET下Word文档的在线编辑、保存和全文关键字搜索的完整示例
查看>>
SYBASE存储过程详解
查看>>
集体智慧算法
查看>>
压缩原理及无线的一点思考
查看>>
ifcfg-p1p1
查看>>
Linux磁盘和文件系统
查看>>
LINUX iptables防火墙规则的匹配条件
查看>>
linux解决磁盘indoe满了问题
查看>>
mysql索引的类型和优缺点
查看>>
CentOS-6.5 安装教程-配置篇-网卡配置
查看>>