public class Bank {
private int sum=0;
public void add(int n) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
sum+= n;
System.out.println(sum);
}
}
public class Consumer implements Runnable {
Bank bank = new Bank();
@Override
public void run() {
for (int i = 0; i < 10; i++) {
bank.add(100);
}
}
}
public class Tes2 {
public static void main(String[] args) {
Consumer consumer = new Consumer();
Thread thread1 = new Thread(consumer);
Thread thread2 = new Thread(consumer);
thread1.start();
thread2.start();
}
}
这是一个多线程程序,模拟多个储户到银行存钱,用来演示多线程的安全问题。由于代码不同步,它的第一、第二个结果可能是200/200,200/300,等等。但是我不明白为什么你得到100/100,谁能解释一下?
撒科打诨
神不在的星期二
相关分类