[Duvida] Metodo System.currentTimeMillis

Não estou entendendo a logica, por que para mostrar o tempo em mili segundos o método é (System.currentTimeMillis() -i) ?

package cursodejava;

public class Break {
public static void main(String[] args) {
    long i = System.currentTimeMillis();

    for(int count=1 ; count <=1000000 ; count++){
        if((count % 17 == 0) && (count % 19 == 0)){
            System.out.println(count);
   
            break;
        }
    }

    System.out.println("Tempo de execução, em milisegundos: "+ (System.currentTimeMillis() -i));
 
   }

}

A API do Java trabalha em formato de pilhas, digamos assim. Veja o código abaixo:

int i = 0;
System.out.print("Oi");
calcularAlgumaCoisa();
System.out.print("Oi");

public void calcularAlgumaCoisa(){
   calcularOutraCoisa();
}

A ordem de execução do Java é sequencial, logo o código acima vai criar e inicializar a variável i, depois vai imprimir na tela, em seguida executar o método calcularAlgumaCoisa. Neste ponto, a lógica de processamento é direcionada para o método em questão e a pilha de baixo é pausada. No método calcularAlgumaCoisa tem uma chamada para o método calcularOutraCoisa, e então o processamento é direcionado para ele. No término da execução do método calcularOutraCoisa, o método calcularAlgumaCoisa retoma o processamento e passa para a próxima instrução. No término dele, o fluxo retorna para a pilha principal e segue para a impressão em tela novamente, finalizando o processo de execução principal, por exemplo.

Veja que é um ciclo bem definido com início e fim, onde cada tarefa é processada, podendo desencadear o processamento de novas subtarefas. Por ter este ciclo bem definido, é possível capturar um System.currentTimeMillis() no início e outro no fim. A diferença entre eles resulta no tempo de processamento da tarefa.

Pensa num conceito de cascata, onde a tarefa seguinte é executada somente no término da anterior.

1 curtida

Obrigado mano, levei um tempinho aqui refletindo na sua resposta e consegui entender !! kk