我看到这个Java的同步教程:在java中的同步保护修改后的类字段吗?
public class SynchronizedCounter {
private int c = 0;
public synchronized void increment() {
c++;
}
public synchronized void decrement() {
c--;
}
public synchronized int value() {
return c;
}
}
教程说,通过不同的线程后续调用阻塞,就像这样:
答:增量();
B:increment();答:必须等待A完成
......但说两个线程交错如此:
答:增量():加载c - > 0; B:递减():加载c - > 0; A:增量():增量C - > 1; B:递减():递减c - > -1; A:增量():保存C - > 1; B:递减():保存c - > -1;
最后:c == -1;
根据我对本教程的理解,无论如何,所以是保护内存不一致?
由于大众需求:the tutorial
请提供本教程的链接。是否有其他方法,加载和保存,这是类的一部分,但不同步? –
将教程与您的问题进行比较,关于调用问题中各种方法的线程的材料不在教程中,那么来自哪里?你写了一个真正的Java程序来试用它,这些是结果还是什么? –
我刚刚制作了两个线程,分别调用increment()和decrement(),因为它不在本教程中;我想知道发生了什么,因为它不在教程中。 – user2738698