I have two threads, one setting a variable of a class, and the other one accessing the variable by a get method.
public class Parent {
    private int value = -1
    public int getValue()
      return this.value;
    }
    public void setValue(int value){
      this.value = value;
    }
    private class UpdatingVaribale extends Thread {
    public void run() {
      while (!Thread.currentThread().isInterrupted()) {
        try {
            setValue(2);
            Thread.currentThread().interrupt();
        }
      } 
    }
}
private class GettingVaribale extends Thread {
    public void run() {
      while (getValue == -1) {
        try{
            System.out.println(getValue);
            Thread.sleep(500);
         } catch (InterruptedException e) {
         }
       }
       System.out.println(getValue); 
    }
}
The problem is that the condition of the while loop in the second thread is always true. The System.out.println(getValue) always prints -1. I am wondering why the second thread doesn't get the new value of value which is 2. I don't think the synchronized matters here since one thread is setting a variable and the other one just accessing the variable. 
 
     
    