Problemas JProgressBar

Olá

Possuo o seguinte problema, quando executa uma determinada operação, desejo abrir uma JProgressBar e bloquear a janela que eonctra - se atrá do JProgressBar. Tentei utilizar a propriedade setmodal(true), mas daí o JProgressBat fica trancando no setvisible e só saí se eu fecho o JProgressBar, gostaria que ele fechasse sozinho ao terminar de executa a operação e bloqueasse o que estivesse atrá do JProgressBar. Segue os códigos:

Método que chama o ProgressBarPDH, ele tranca no setVisible(true) e só executa o writeAggregated() depois que eu fecho a progressBar.

public void setAggregated(){
        Thread th = new Thread(){@Override
                public void run() {
            p = new ProgressBarPDH(null, "teste", 10);
            // pg = new ProgressBar(null,Resource.getText("progressbar.title"),1);
           p.setAlwaysOnTop(true); 
           p.setVisible(true);

            writeAggregated();
            p.dispose();
            //habilitaBotoes(true);
      }};
      th.start();
    } 

Código da ProgressBar, se eu coloco a propriedade setModal(true), a JPogresse não fecha sozinha, mas se eu não coloco ela fecha sozinha e não me deixa mexer na janela que eu tenho atraás da JProgressBar, e a idéia é bloquear essa janela.

public class ProgressBarPDH
        extends JDialog
        implements ActionListener {
    
    private JPanel content;
    private JPanel button;
    private JProgressBar progressBar;
    private JButton buttonOK;
    
    public ProgressBarPDH(Frame owner,String title, int total) {
        
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
         title = "teste";
        
        // make the progress window
        //JDialog win = new JDialog(ApplicationContext.getMainFrame(), title, true);
        JDialog win = new JDialog((Frame)null, title, true);
        win.setSize(200, 200);
        win.setLocation(200, 200);
        win.setResizable(false);
        
        
        JPanel pnConfigure = new JPanel();
        pnConfigure.setPreferredSize(new Dimension(200, 200));
        pnConfigure.setBorder(BorderFactory.createBevelBorder(1));
        pnConfigure.setLayout(null);
        win.getContentPane().add(pnConfigure);
        
        // make the Progress Bar
        JProgressBar pBar = new JProgressBar(50, 50);
        pBar.setBounds(30, 35, 50, 50);
        pBar.setStringPainted(true);
        
        pnConfigure.add(pBar);
        setModal(true);
        win.pack();
    }
}

Alguém pode me ajudar??

Obrigada