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.
