Ho creato un finestra principale.
Alle pressione del tasto.
Vengono creati due thread,uno che mostra una jdialog ed una che esegue un 'operazione.
Alla fine dell'operazione va a scrivere sullo stdout OK.
All'interno della jdialog deve comparire una scritta.
Il problema è quando visualizzo la jdialog la scritta non viene visualizzata ma viene visualizzato solo al termine dell'operazione perchè succede questo??

codice:
public class Ascoltatore implements ActionListener {
    private FinestraPrincipale fp;

    /**
     * @param args the command line arguments
     */
    
    public Ascoltatore(){
         fp = new FinestraPrincipale(this);
        
    }
    
    
    public final void istancePanelProgres(){
        PanelProgres pp = new PanelProgres(fp);
    }
    public final void istanceOperation(){
        Operazione o = new Operazione();
    }
    
    public static void main(String[] args) {
        // TODO code application logic here
        new Ascoltatore();
       
    }

    public void actionPerformed(ActionEvent e) {
        
       if(e.getActionCommand().equals("premi")){
           
           Thread t = new Thread(new Runnable(){

                public void run() {
                  istancePanelProgres();  
                }
               
           });
           
          Thread t1 = new Thread(new Runnable(){

                public void run() {
                  istanceOperation(); 
                }
               
           }); 
           
          t1.start();
          t.start();
            try {
                t1.join();
                System.out.println("Ok");
            } catch (InterruptedException ex) {
                Logger.getLogger(Ascoltatore.class.getName()).log(Level.SEVERE, null, ex);
            }
           
       }
    }

public class FinestraPrincipale extends JFrame{
   public FinestraPrincipale(Ascoltatore asc){
      this.setTitle("Example");
      this.setBounds(0, 0, 700, 700);
      JButton jbutton = new JButton("premi");
      jbutton.addActionListener(asc);
      this.add(BorderLayout.NORTH,jbutton);      
      this.setVisible(true);
   }
}



public class PanelProgres {
  public PanelProgres(JFrame frame){
      JDialog jdialog = new JDialog(frame,"jdialog",true);
      JPanel jpanel = new JPanel();
      jpanel.add(new JLabel("Waiting..Working in progres"));
      jdialog.getContentPane().add(jpanel);
      jdialog.setBounds(100, 100, 300, 100);
      jdialog.setVisible(true);
      
      
  }
}

public class Operazione {
    public Operazione(){
        for(int i = 0 ;i<10000;i++){
            System.out.println("Ciao");
        }
    }
    
}