Não entendi o que quis dizer com “pára logo após a chamada do método setVisible(), visto que é modal”.
Se eu entendi direito. o programa fica aguardando que alguma coisa aconteça com o JDialog, certo?
Isso ocorre por que, provavelmente, você esteja tentando abrir esse JDialog na mesma thread.
Tente usar SwingUtilities, quem sabe fica mais fácil.
CapJam
O programa fica aguardando dá 40min (faço a Thread dormir 40min), para fechar a JDialog. Mas o sleep não é executado por que a thread interrompe na execução do método setVisible(true)
Assim, o Thread.sleep(2400000); só vai ser executado quando a JDialog for fechada pelo usuário. Entendeu?
al.barbosa
Você pode usar a classe Timer (java.util.Timer) para realizar os agendamentos. Os métodos shcedule() e scheduleAtFixedRate() permitem realizar agendamentos de diversas formas (por exemplo: para determinada data/hora, com delay de início e podendo repetir a intervalos específicos). Pode agendar para abrir e fechar a janela, pode ficar mais fácil que usar threads diretamente.