使用一个基本示例来说明我的问题我有两个近乎相同的代码位。While循环和线程的无限循环问题
此代码会导致while
循环无限运行。
private boolean loadAsset() {
new Thread(new Runnable() {
@Override
public void run() {
// Do something
loaded = true;
}
}).start();
while (!loaded) {
// System.out.println("Not Loaded");
}
System.out.println("Loaded");
return false;
}
此代码然而(即做在while循环的东西)导致要成功评价了loaded
变量并允许while
环打破和方法来完成。
private boolean loadAsset() {
new Thread(new Runnable() {
@Override
public void run() {
// Do something
loaded = true;
}
}).start();
while (!loaded) {
System.out.println("Not Loaded");
}
System.out.println("Loaded");
return false;
}
任何人都可以向我解释为什么这是?
你为什么要依靠一个可以被其他领域改变的领域价值?你可能不得不让整个块同步 – Reddy
是'加载''volatile'吗? – axtavt