JProgresBar

Pessoal esotu testando uma aplicação de um jogo de Damas, e gostaria de implementar um JProgressBar antes de entrar na aplicação. Isso eu já consegui, só que eu queria mostrar a porcentagem já carregada baseada no tempo levado para a aplicação levantar.
Uso o System.currentTimeMillis() para pegar o Time ao iniciar e o Time de parada, quando para de carregar. Depois uso um método get() para pegar o tempo total em ms que minha aplicação gasta para iniciar, subtraindo o TimeFinal do TimedeInicio. Só que não consegui colocar pra mostrar a porcentagem nem associar ela com o tempo, alguem sabe o raciocinio ou o jeito adequado de se fazer isso pegando pelo tempo?

   Ai vai meu código:
package game;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;

/**
 * 
 *  @author fabricio
 *  Metodo para calculo do tempo levado para a aplicação iniciar
 */

public class TesteTempo2 extends JFrame implements Runnable {
	
	long tempodepartida = -1;
	long tempodeparada = -1;
	boolean decorrido = false;
	private JPanel contentpane;
	private JProgressBar progressbar = new JProgressBar();
	int i;
	int j;
	static final int minimum = 0, maximum = 100;
	
	// construtor
	public TesteTempo2(){
		// implementando JProgressbar
		setTitle("Carregando...");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 342, 130);  
	    contentpane = new JPanel();  
	    contentpane.setBorder(new EmptyBorder(5, 5, 5, 5));  
	    setContentPane(contentpane);  
	    setLocationRelativeTo(null); // Centraliza a tela  
	    contentpane.setLayout(null);
	    progressbar.setBounds(103, 55, 213, 19);  
	    progressbar.setStringPainted(true);
	    // Tam minimo e maximo do ProgressBar
	    progressbar.setMinimum(minimum);
	    progressbar.setMaximum(maximum);
	    
	    contentpane.add(progressbar);  // add JProgressbar no Painel
	     
	    new Thread(this).start();  // dispara a Thread principal
	    
	}
	
	public void atualizaBarra(int value){
		progressbar.setValue(value);
	}
	
	
	public TesteTempo2 start(){
		tempodepartida = System.currentTimeMillis(); // pega o time atual em ms
		decorrido = true; // variavel de estado indicando q esta decorrendo os calculos
		
		return this;
	}
	
	public TesteTempo2 stop(){
		tempodeparada = System.currentTimeMillis();		
		decorrido = false;
		
		// para JProgressBar
		
		
		return this;
	}
	// pegando o tempo decorrido
	// implementa carregador antes do programa iniciar
	public long getTempodecorrido(){
		// tempo total decorrido
		long i = tempodepartida;
		TesteTempo2 teste = new TesteTempo2();
		 // pega valor do PB
		j = progressbar.getValue(); // pega time depois q tudo terminou
		
		// joga ProgressBar durante o carregamento
		for(i = tempodepartida; i < tempodeparada; i++){
			System.out.println("Time: "+ i);
			try{
				teste.setResizable(false);
				teste.setVisible(true);
			}catch(Exception e){
				e.printStackTrace();
			}
			
		} teste.setVisible(false); // apaga depois q sai do laço
								
		if(tempodepartida == -1){
			return 0;
		} 
		if(decorrido){ // se decorrido == true
			return System.currentTimeMillis() - tempodepartida;
		}else{ 
			return tempodeparada - tempodepartida;
			
		} // todos retornam o msm resultado: parada - partida
		
		
	}
	
	// reseta todas as variaveis
		public TesteTempo2 resetar(){
			tempodepartida = -1;
			tempodeparada = -1;
			decorrido = false;
			return this;
			
		}
		
	
	 /**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try{
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		}catch(Exception e){e.printStackTrace();}
				
		TesteTempo2 teste = new TesteTempo2().start(); // instancia classe TesteTempo2 c/ construtor
						
		// teste o tempo para rodar um for
		long tempo = 0;
		for(int i=0;i < 10000000;i++){
			tempo+=i;
			
		}
			
		teste.stop(); // para a contagem, e pega o time final 
		//teste.setVisible(false);
		System.out.println("Tempo decorrido: " +teste.getTempodecorrido() + " ms");
		
		

	}
	// metodo do run
	@Override
	public void run() {
		try{
			while(i < 101){
				Thread.sleep(5);
				progressbar.setValue(i++);
			}
			/*for (int i = minimum; i <= maximum; i++) {
				TesteTempo2 teste = new TesteTempo2();
				final int percent = i;
				Thread.sleep(5);
				teste.atualizaBarra(percent);
			}*/
			
			}catch(InterruptedException e){
				e.printStackTrace();
			}
	}
}