How can a Java variable be different from itself?

前端 未结 10 1847
日久生厌
日久生厌 2020-11-29 16:14

I am wondering if this question can be solved in Java (I\'m new to the language). This is the code:

class Condition {
    // you can change in the main
    p         


        
10条回答
  •  一向
    一向 (楼主)
    2020-11-29 17:06

    Not sure if this is an option but changing x from local variable to a field would allow other thread to change its value between the reading left and right side in if statement.

    Here is short demo:

    class Test {
    
        static int x = 0;
    
        public static void main(String[] args) throws Exception {
    
            Thread t = new Thread(new Change());
            t.setDaemon(true);
            t.start();
    
            while (true) {
                if (x == x) {
                    System.out.println("Ok");
                } else {
                    System.out.println("Not ok");
                    break;
                }
            }
        }
    }
    
    class Change implements Runnable {
        public void run() {
            while (true)
                Test.x++;
        }
    }
    

    Output:

    ⋮
    Ok
    Ok
    Ok
    Ok
    Ok
    Ok
    Ok
    Ok
    Not ok
    

提交回复
热议问题