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

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赋值操作


白衣染霜花
浏览 708回答 2
2回答

萧十郎

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

慕哥6287543

显然是B啊,这不正是volatile的作用吗
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java