I have two threads and in one thread I set static variable and in another I check static variable via function like this
Test test= new Test();
while(!Temp.isVarSet()){
}
System.out.println("Variable set");
But this codes hangs - doesn't go to println statement. But the following code works
Test test= new Test();
while(!Temp.isVarSet()){
  System.out.println("I am still here");
}
System.out.println("Variable set");
The Temp class
public class Temp {
    private volatile static boolean varSet=false;
    public synchronized static void setVarSet() {
        Temp.varSet=true;
    }
    public synchronized static boolean isVarSet() {
        return Temp.varSet;
    }
}
Test class
public class Test{
        public Test() {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    Model model= new Model();
                    View view = new View();
                    Controller controller=new Controller(model, view);
                    Temp.setVarSet();
                  ...
                }
            });
        }
    }
What can be reason? I set method isVarSet() synchronized but it didn't help.
EDIT
This code works too.
Test test = Test()        
while(!Temp.isVarSet()){
            Thread.sleep(100);
}
 
     
     
    