Tiempo en java
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!
¿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!
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);
}
public void run()
{
long tiempoInicio=System.currentTimeMillis();
do
{
//Hacer lo que sea
}
while(System.currenTimeMillis-tiempoInicion<5000);
}
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.
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.
