Java 直接赋值或带有赋值的控制

Java 直接赋值或带有赋值的控制,java,variable-assignment,Java,Variable Assignment,我有一个游戏循环 class Game extends Runnable { private boolean running = false; @Override public void run() { running = true; while(running) { //... } } } 我在想(在游戏循环中)直接赋值给一个变量或者在这之前用if控制是否更好。例如: x = true

我有一个游戏循环

class Game extends Runnable {
    private boolean running = false;

    @Override
    public void run() {
        running = true;
        while(running) {
             //...
        }
    }
}
我在想(在游戏循环中)直接赋值给一个变量或者在这之前用
if
控制是否更好。例如:

x = true;


它们做同样的事情,但是第一个更容易阅读,并且不需要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
如果(!x)x=true
不保证语句末尾的
x
为真。这是因为在测试它和绕过分配之间,另一个线程可能会将
x
设置为
false

为了安全起见,请设置
x=true
,这样会更快

从技术上讲,如果(!x)x=true,
在Java中不是原子的,但是
x=true
是原子的

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