我有一个游戏循环
class Game extends Runnable {
private boolean running = false;
@Override
public void run() {
running = true;
while(running) {
//...
}
}
}
我在考虑在此之前是否更好(在游戏循环中)直接分配给变量或具有if
的控件。例如:
x = true;
或
if(!x) x = true;
答案 0 :(得分:3)
他们做同样的事情,但第一个更容易阅读,并且不需要if语句。
x = true;
//x is now true
if(!x) x = true;
//x is true if x wasn't true, if x was true before it is still true
答案 1 :(得分:3)
if (!x) x = true;
不确保x
在声明结尾处为真。这是因为另一个线程可能会在您测试它和绕过分配之间将x
设置为false
。
为了安全起见,设置x = true
,无论如何都会更快。
从技术上讲,if (!x) x = true;
在Java中不是原子,但是x = true
是。