Ciao a tutti, sto facendo un piccolo applicativo in java, e ho bisogno di una progressBar, ho un problema, mi aggiorna il valore della progressBar solo alla fine del esecuzione del ciclo:

vi posto il codice

codice:
public void inviaSms(){
        ...
           ProgessBar d = new ProgessBar(this,count);
           Thread t = new Thread(d);
           t.start();
            for (int i=0; i<count; i++){
                    String num = jTable1.getValueAt(i, 2).toString();
                    s.mandaSms(num, ss);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(Launch.class.getName()).log(Level.SEVERE, null, ex);
            }
            }
           ...
codice:
public void updateProgressBar(double i){
        progressBar.setValue((int)i);
    }
codice:
package gui;

import java.util.logging.Level;
import java.util.logging.Logger;

public class ProgessBar implements Runnable{

    Launch context;
    int count;

    public ProgessBar(Launch context, int c){
        this.context=context;
        this.count=c;
    }

    public void run() {
            double i=0;
            double valore=100/count;
            while (i<100){
            context.updateProgressBar(i);
            try {
                Thread.sleep(50);
            } catch (InterruptedException ex) {
                Logger.getLogger(ProgessBar.class.getName()).log(Level.SEVERE, null, ex);
            }
            i+=valore;
            }
    }
}
Dove sbaglio?