Java并发编程线程安全性的委托

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java并发编程线程安全性的委托相关的知识,希望对你有一定的参考价值。

 

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

 

 

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

 

独立的状态变量

 

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

 

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

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

 

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

以上是关于Java并发编程线程安全性的委托的主要内容,如果未能解决你的问题,请参考以下文章

[Java 并发编程实战] 集合框架之 同步容器类 & 并发容器类

Java开发者跳槽必备:用java编程介绍自己

java并发编程实战:第五章----基础构建模块

Java并发编程——常见的线程安全问题

第二章:线程安全性——java并发编程实战

java并发编程实战:第二章----线程安全性