为了账号安全,请及时绑定邮箱和手机立即绑定

使用volatile变量后,符合happens-before规则的是哪个?

使用volatile变量后,符合happens-before规则的是哪个?

白衣染霜花 2018-07-19 23:10:45
public class TestClass {int i = 0;volatile boolean tmpvo = false;public void one() {     i = 1; // 整型变量     tmpvo = true; // 布尔变量}public void two() {    if(tmpvo) { // 判断操作         int j = i; // 赋值操作         //......     } }}假设one()方法被线程1执行之后,方法two()被线程2执行,下面哪个符合happens-before的规则?单选A、整型变量happens-before赋值操作B、布尔变量happens-before判断操作C、整型变量happens-before布尔变量D、判断操作happens-before赋值操作
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

我选D,单线程里面的整型变量和布尔变量可能会发生重排序,且对他们没有影响,而volatile是多线程的并发保证,保证了可见性,因而我选择存在逻辑先后的判断与赋值

查看完整回答
反对 回复 2018-07-20
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

显然是B啊,这不正是volatile的作用吗

查看完整回答
反对 回复 2018-07-20
  • 2 回答
  • 0 关注
  • 689 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信