多线程原子性、可见性、可排序

原子性:

对象类型:
对象地址原子读写,线程安全
并发读不可变状态,线程安全
并发读写可变状态,非线程线程
基本类型:
int,char数值读写,线程安全
long,double高低位,非线程安全(32位系统)
i++等组合操作,非线程安全


可见性:

final
初始化final字段确保可见性
volatile
读写volatile字段确保可见性
synchronized
同步块内读写字段确保可见性
happen before
遵守happen before次序可见性

  lock 

lock确保可见性,但重入的第二个锁应该不具有该特性

可排序:

Happen Before 法则
程序次序法则

如果A一定在B之前发生,则happen before,
监视器法则
对一个监视器的解锁一定发生在后续对同一监视器加锁之前
Volatie变量法则
写volatile变量一定发生在后续对它的读之前
线程启动法则
Thread.start一定发生在线程中的动作之前
线程终结法则
线程中的任何动作一定发生在括号中的动作之前(其他线程检测到这个线程已经终止,从Thread.join调用成功返回,Thread.isAlive()返回false)
中断法则
一个线程调用另一个线程的interrupt一定发生在另一线程发现中断之前。
终结法则
一个对象的构造函数结束一定发生在对象的finalizer之前
传递性
A发生在B之前,B发生在C之前,A一定发生在C之前。


https://www.ibm.com/developerworks/java/library/j-jtp0618/index.html



http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#reordering

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值