Abra e feche com segurança o JDialog modal (usando o SwingWorker)

Eu precisava de uma maneira de obter alguns dados de um banco de dados e impedir que o usuário modificasse os dados existentes naquele momento.

Eu criei um SwingWorker para fazer a atualização do banco de dados e um JDialog modal para mostrar ao usuário o que está acontecendo (com um JProgressBar). A caixa de diálogo modal tem defaultCloseOperation definida como DO_NOTHING, por isso só pode ser fechada com uma chamada adequada - eu usosetVisible(false).

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

O SwingWorker faz algumas coisas dentro do doInBackground () e, por último, chama:

myModalDialog.setVisible(false);

Minha única preocupação e minha pergunta: é possível que o SwingWorker execute osetVisible(false) antes que sejasetVisible(true) na linha depois que o trabalhador desovar?

Se assim forsetVisible(true) poderia bloquear para sempre (o usuário não pode fechar a janela modal).

Eu tenho que implementar algo como:

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

para se certificar de que realmente será fechado?

questionAnswers(1)

yourAnswerToTheQuestion