读书笔记-java并发编程的艺术3-4章

volatile的内存语义

可见性:对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。
原子性:如果是多个volatile操作或类似于volatile++这种复合操作,整体上不具有原子性
当第二个操作是volatile写时,不管第一个操作是什么,都不能重排序。这个规则确保volatile写之前的操作不会被编译器重排序到volatile写之后
当第一个操作是volatile读时,不管第二个操作是什么,都不能重排序。这个规则确保volatile读之后的操作不会被编译器重排序到volatile读之前
当第一个操作是volatile写,第二个操作是volatile读时,不能重排序
基于保守策略的jmm内存屏障插入策略
在每一个volatile写操作的前面插入一个StoreStore屏障,后面插入一个Store Load屏障。
在每一个volatile读操作的后面插入一个Load Load屏障,插入一个Load Store屏障

双重检查锁定与延迟初始化

用volatile和双重检查锁定来避免synchronized存在的巨大性能开销
基于类初始化的解决方案
jvm在类的初始化阶段,会执行类的初始化。在执行类的初始化期间,jvm会获取一个锁,这个锁可以同步多个线程对同一个类的初始化。

java并发编程基础

线程的状态
初始 运行状态 阻塞状态 等待状态 超时等待状态 终止状态
线程间的通信
等待/通知机制
管道输入/输出流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值