你好,我是多线程的新手.试图理解原子整数的概念.我有一个共享的计数器变量,它按两个线程递增
class MyCounterClass{
volatile AtomicInteger sharedCounter = new AtomicInteger(0);
public int incrementCounter() {
for(int i = 0; i <10000; i++){
// add 1
sharedCounter.incrementAndGet();
}
return this.sharedCounter.get();
}
}
public static void main(String[] args) throws InterruptedException {
MyCounterClass myCounterClassObj = new MyCounterClass();
Thread t1 = new Thread(() -> {
System.out.println("Thread " + Thread.currentThread().getName() + " " +myCounterClassObj.incrementCounter());
});
Thread t2 = new Thread(() -> {
System.out.println("Thread " + Thread.currentThread().getName()+ " " + myCounterClassObj.incrementCounter());
});
t1.start();
t2.start();
t1.join();
t2.join();
}
}
我认为我的2个线程的输出将是20000.但是我得到了20000作为一个线程的输出,而另一个线程显示了10000到20000之间的一些随机值. 有人能帮我了解一下这里发生了什么吗?