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

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

 

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

 

 

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

 

独立的状态变量

 

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

 

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

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

 

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

转载于:https://www.cnblogs.com/tuhooo/p/8036743.html

你可能感兴趣的文章
模板设计模式的应用
查看>>
12010 解密QQ号(队列)
查看>>
方维分享系统二次开发, 给评论、主题、回复、活动 加审核的功能
查看>>
Matlab parfor-loop并行运算
查看>>
2012-01-12 16:01 hibernate注解以及简单实例
查看>>
旅途上看的电影和观后感
查看>>
Ztree异步树加载
查看>>
关于IE和火狐,谷歌,Safari对Html标签Object和Embed的支持问题
查看>>
poj3320 Jessica's Reading Problem(尺取思路+STL)
查看>>
分布式计算开源框架Hadoop介绍
查看>>
坏的事情不都会带来坏的结果
查看>>
RPC的基础:调研EOS插件http_plugin
查看>>
第二次团队冲刺第二天
查看>>
11)Java abstract class 和 interface
查看>>
使用xrdp或Xmanager 远程连接 CentOS6
查看>>
Linux误删恢复
查看>>
Unity调用Windows窗口句柄,选择文件和目录
查看>>
HashMap循环遍历方式
查看>>
React Native 入门 调试项目
查看>>
C# 通过 Quartz .NET 实现 schedule job 的处理
查看>>