Tiempo en java

Kim
07 de Febrero del 2006
Hola a todos!

¿Cómo se calcula el tiempo transcurrido?
Quiero hacer que durante un tiempo determinado se ejecute una acción y que cuando pase ese tiempo pare.

Saludos!

Diego
07 de Febrero del 2006
El tiempo se mide con System.currentTimeMillis() para medir en milisegundos y System.nanoTime() en nanosegundos. Con que lo ejecutes antes de un trozo de código y después restes el valor al inicial obtendrás el el tiempo que ha tardado. Supongo que trabajas con hilos. Haz un método run así´, suponiendo que quieres que se ejecute por al menos 5 segundos:

public void run()
{
long tiempoInicio=System.currentTimeMillis();
do
{
//Hacer lo que sea
}
while(System.currenTimeMillis-tiempoInicion<5000);
}

Rupper
07 de Febrero del 2006
El codigo que comenta Diego esta muy bien, pero a mi forma de pensar tiene un error. El bucle while, al no contener nada dentro, se ejecutara una y otra vez hasta que deje de cumplirse la condicion. Eso colapsara la cpu.

Puedes evitar el colapsamiento dandole "respiros" al ordenador entre comprobacion y comprobacion. Perderas exactitud de calculo, pero vale la pena:

while(System.currenTimeMillis-tiempoInicion<5000){
Thread.sleep(200);
}

Con este codigo, como mucho el thread tendra un retraso de 200 milisegundos. Asi evitas que la CPU se ahogue en el bucle.

Salu2 d rupper.