Tempo decorrido

Pessoal, já procurei muito e não consegui encontrar a solução por isso peço ajuda de vocês.
Estou fazendo um teste para calcular o tempo decorrido na execução de um metodo e uma das soluções (que duvido que seja a melhor) é fazer o seguinte:

Adicionar esta linha no início do código:
long tempoInicial = System.currentTimeMillis();

E esta outra no final do código:
long decorrido = System.currentTimeMillis() - tempoInicial;

Existe uma forma mais “precisa” se obter o valor do tempo decorrido e exibir o resultado em segundos e milissegundos?

Acho que seria sim uma boa opção a que vc escolheu. Segue abaixo algo que eu faria.

// Salva o tempo inicial
long iniTime = System.currentTimeMillis();

// Resultado da diferença do tempo inicial e o atual já formatado (basta escolher o shape que vc quer)
System.out.println(format("HH:mm:ss.SSS", System.currentTimeMillis() - iniTime));

// Retorna uma String formatada com o tempo decorrido
public String format(String shape, long currentTimeMillis) {
    return new SimpleDateFormat(shape, Locale.getDefault()).format(currentTimeMillis);
}

Amigo, é isto aí!
Meu ajudou bastante.
Eu tinha em mente que não era necessário formatar, no caso adaptei o pattern para “ss:SSS”.

Obrigado e grande abraço!!