Cómo utilizar el temporizador de giro para retrasar la carga de una barra de progreso

Necesito encontrar una forma de usar el temporizador de swing con una barra de progreso. Intenté usar Thread.sleep (), pero bloqueó la aplicación cuando la usé. ¿Alguna forma de usar el temporizador de swing en lugar del Sleep ()?

public void piiEros(int dist)
{
    Pii pii = new Pii();
    pii.setVisible(true);
    for(int pc = 0;100 > pc; pc++)
    {
        try {
            Thread.sleep(dist/100);
        } catch (InterruptedException ex) {
            Logger.getLogger(Trav.class.getName()).log(Level.SEVERE, null, ex);
        }
        pii.pg.setValue(pc);
    }
    pii.dispose();
    o.Eros();
}

NOTAS: Pii es una clase con la barra de progreso. Dist es la velocidad a la que se carga. Trav es la clase en la que se encuentra el método. PC significa%, la cantidad que se hace se muestra en la barra. o.Eros abre otro GUI.

Respuestas a la pregunta(2)

Su respuesta a la pregunta