我们来看一段简单的代码:
public class marry {
static int money = 0;
public static void main(String[] args) {
new Thread(() ->{
while (money < 220000){
// System.out.println("现在的钱有"+ money);
}
System.out.println("可以结婚了");
}).start();
new Thread(() -> {
System.out.println("给我5年,存22w");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
money = 220000;
System.out.println("存够钱啦");
}).start();
}
}
结果为:
问题在于money发生改变时,第一个线程无法获得最新的money。
1,堆内存是唯一的,每一个线程都有自己的线程栈。</