title: Swing modal dialog refuses to close - sometimes!
body: <pre><code>// This is supposed to show a modal dialog and then hide it again. In practice,
  // this works about 75% of the time, and the other 25% of the time, the dialog
  // stays visible.
  // This is on Ubuntu 10.10, running:
  // OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1)
  
  // This always prints
  // setVisible(true) about to happen
  // setVisible(false) about to happen
  // setVisible(false) has just happened
  // even when the dialog stays visible.
  
  package modalproblemdemo;
  
  import java.awt.Frame;
  import javax.swing.JDialog;
  import javax.swing.SwingUtilities;
  
  public class Main {
      public static void main(String[] args) {
          final Dialogs d = new Dialogs();
          new Thread() {
              @Override
              public void run() {
                  d.show();
                  d.hide();
              }
          }.start();
      }
  
      static class Dialogs {
          final JDialog dialog;
  
          public Dialogs() {
              dialog = new JDialog((Frame) null, "Hello World", /*modal*/ true);
              dialog.setSize(400, 200);
          }
  
          public void show() {
              SwingUtilities.invokeLater(new Runnable() { public void run() {
                  dialog.setLocationRelativeTo(null);
                  System.out.println("setVisible(true) about to happen");
                  dialog.setVisible(true);
              }});
          }
  
          public void hide() {
              SwingUtilities.invokeLater(new Runnable() { public void run() {
                  System.out.println("setVisible(false) about to happen");
                  dialog.setVisible(false);
                  System.out.println("setVisible(false) has just happened");
              }});
          }
      }
  }
  </code></pre>