I have written a small sample code:
public class Button2 implements Runnable{
JButton jButton = new JButton();
static boolean changeContext = false;
public Button2(){
jButton.setText("ButtonTWO");
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
changeContext = true;
((JButton)e.getSource()).setEnabled(false);
}
});
}
@Override
public void run() {
System.out.println("ButtonTWO run...");
jButton.setEnabled(true);
while(true){
if(changeContext)
break;
}
changeContext = false;
}
}
When I run it like:
Button2 threadTWO = new Button2();
Thread thread2;
try{
thread2 = new Thread(threadTWO);
thread2.start();
thread2.join();
}catch(Exception ex){
System.out.println("Ëxception caught");
}
It never comes out, even after clicking button.
If I add a sysout
or Thread.sleep(1)
after while(true) in run method
, it comes out of while loop. What can be the possible reason?