c++ 等待线程执行结束_java内存模型和线程安全

java内存模模型

      • 原子性
      • 有序性
      • 可见性
      • Happen-Before
      • 线程安全的概念

线程模型图

6a271629d2464d460fa76a8b746f4418.png

原子性

      • 原子性指的是一个操作是不可中断的,即是在多线程的情况下一起操作的时候,一旦开始就不会被其他的线程干扰
      • 那么有个的问题了java中i++操作是原子性的么?
      • 其实不然i++操作不是原子性的,i++至少有两个操作,读和写
      • i++的原子性问题:

i++的实际操作分为3个步骤“读-改-写”

基础时对i++和++i的区别是

i++:现使用变量然后在对自身加1

++i:现对自身加一在使用变量

计算机底层对递增的算法是,先读取i的值存到一个临时变量中,在对这个临时变量进行加一的操作。此时这个变量的不具备线程中安全的性质,也就是说i++是可以出现线程干扰的。

int i  = 10;
i=i++;

底层的操作是
 
int  temp = i
i = I+ 1;
i=temp;

有序性

  • 有序性指的是程序在运行的时候的顺序在多线程的情况下,其实我们是无法控制程序的运行顺序的,我们知道我们书写的代码是存一行一行执行的,在并发的程序中,程序的执行可能和我们的预想的执行顺序是不一样
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值