Возможно, это глупый вопрос, но может ли результат этой программы (как она есть) быть нулевым?
public class Test2{
int a = 0;
AtomicInteger b = new AtomicInteger();
public static Test2 c = new Test2();
public static void main(String[] args){
Thread t1 = new Thread(new MyTest1());
Thread t2 = new Thread (new Mytest2());
t1.start();
t2.start();
}
}
class MyTest1 implements Runnable{
public void run(){
Test2.c.a = 1;
Test2.c.b.compareAndSet(0,1);
}
}
class Mytest2 implements Runnable{
public void run(){
int x = 0;
if(Test2.c.b.get() == 1)
x = Test2.c.a;
System.out.println("Value of x = "+x);
}
}
Причина, по которой я спрашиваю об этом, заключается в том, что хотя я использую AtomicInteger, сначала может быть выполнен оператор if () в MyTest2, а затем x будет иметь значение ноль .. верно?
или я не думаю прямо.
Любая помощь будет принята с благодарностью.