public class VolatileInc implements Runnable{
private static volatile int count = 0;//使用volatile修饰基本数据不能保证原子性
public void run() {
for(int i=0;i<10000;i++){
count++;
}
}
public static void main(String[] args) {
VolatileInc inc = new VolatileInc();
Thread t1 = new Thread(inc,"Thread A");
Thread t2 = new Thread(inc,"Thread B");
t1.start();
t2.start();
for(int i=0;i<10000;i++){
count++;
}
System.out.println("最终count>>>"+count);
}
}
各位大神,以上这段代码我在哪个地方加synchronized锁可以使得最终count为30000,怎么个执行过程
弄个count++相关的方法 在方法里面加锁 不直接修改count的值 通过这个相关方法来修改 不就能保障最终为3000了
谢了,这样试了下果然可以
你这个代码不满足啊~~你循环最大值是10000~即便是只有一个线程~也会达到10000 啊~
失误了,不好意思,想要得到最终count应该是30000的。