Java多线程知识点汇总

happens-before原则的本质是什么?

happens-before是对Java内存模型的进一步抽象,通过几条简洁明了的规律屏蔽了Java内存模型的实现细节。在满足条件的情况下,保证了一个线程的操作是对另一个线程实时可见的,或是保证某些操作一定不会发生指令重排。

volatile的两个语义(禁止指令重排、保证线程间内存可见性)在Java内存模型、CPU层面是如何实现的

Java内存模型中:保证对volatile修饰变量的操作有序性,volatile修饰的变量不会被指令重排优化。
在Java内存模型中每次使用volatile修饰变量前都必须先从主内存刷新最新的值;每次修改volatile修饰变量后必须立刻同步回主内存。
在CPU层面:对volatile修饰的变量赋值后,会多执行一个内存屏障操作。指令重排时,不能把后面的指令重排序到内存屏障前的位置。还会将本处理器的缓存写入内存,引起别的处理器无效化其缓存。

Java内存模型的作用是什么

屏蔽硬件和操作系统的内存访问差异,让Java程序在各种平台都能达到一致的内存方位效果。

synchronized保证线程间内存可见性的原理是什么?和volatile一样吗

待补充

多线程有序性受哪些因素影响?

线程内的指令重排;线程工作内存和主内存的非实时同步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值