java并发实战读书笔记-3章

3.1 可见性
sychronized关键字的作用有两个:1是原子性 2是可见性。后者常常被忽视
NoVisibility程序演示没有同步的的共享变量。
3.1.1 失效数据
3.1.2 非原子的64位操作:存在于非volatile或没有加锁控制的long和double
3.1.3 加锁的与可见性
3.1.4 volatile
数据为共享,不会被缓存在寄存器和其他对对于处理器不可见的地方,每个线程不会有数据的本地拷贝。
volatile的用法:
http://www.ibm.com/developerworks/cn/java/j-jtp06197.html
3.2 发布与逃逸
什么是发布
什么是逃逸
UnsafeStates演示逃逸
ThisEscape演示内部类的方式发布对象--隐式地使this引用逃逸。
这样的话如果在构造函数中启动一个线程,那么在构造没有完成的情况下,this指的对象已经对线程是可见的了(详见7章)
后面这句话翻译的有点问题:私有方法和终结方法还是写成private和final比较好懂
#TODO 3.8程序清单SafeListener描述了怎么避免this的构造过程逃逸
3.3线程的封闭
3.3.1 ad-hot
3.3.2 栈封闭-我理解就是局部变量
3.3.3 ThreadLocal
3.4 不变性
程序清单3-11 显示如何用可变的对象构建不可变类
3.4.1final 域
final域的特殊含义:保证初始化过程的安全性,从而可以不受限制访问不可变对象,无需同步
3.5 安全发布
程序清单3-14没有同步的发布
3.5.1 不正确的发布
3.5.3 安全发布的常用模式
3.5.4 事实上不可变的对象
看了下Collections.synchronizdMap, 其实就是使用装饰者模式把方法都加了synchronizd, 把引用加了final
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值