Безопасно открывайте и закрывайте модальный JDialog (используя SwingWorker)

Мне нужен был способ получить некоторые данные из базы данных и запретить пользователю изменять существующие данные на тот момент.

Я создал SwingWorker для обновления базы данных и модальный JDialog, чтобы показать пользователю, что происходит (с JProgressBar). В модальном диалоговом окне defaultCloseOperation установлено значение DO_NOTHING, поэтому его можно закрыть только правильным вызовом - я использую.setVisible(false)

MySwingWorkerTask myTask = new MySwingWorkerTask();
myTask.execute();
myModalDialog.setVisible(true);

SwingWorker делает некоторые вещи в doInBackground () и, наконец, вызывает:

myModalDialog.setVisible(false);

Моя единственная проблема и мой вопрос: возможно ли, что SwingWorker выполнитsetVisible(false) прежде чем этоsetVisible(true) в очереди после появления рабочих?

Если так, тоsetVisible(true) может заблокировать навсегда (пользователь может 'закрыть модальное окно).

Должен ли я реализовать что-то как:

while (!myModalDialog.isVisible()) {
    Thread.sleep(150);
}
myModalDialog.setVisible(false);

чтобы убедиться, что он действительно будет закрыт?

Ответы на вопрос(1)

Ваш ответ на вопрос