Java - Java Tiempo

 
Vista:

Java Tiempo

Publicado por Andres Bustamante (1 intervención) el 02/05/2018 15:49:50
Hola Amigos, Tengo una duda, quera saber si en java se puede controlar un while con tiempo, me explico que este ejecutando una función por un minuto y que cuando se acabe el minuto me saque del while
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 26
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Java Tiempo

Publicado por Antonio (32 intervenciones) el 02/05/2018 20:25:03
La única forma seria crear un boolean a false crear una variable de tiempo pasarla a segundos
entonces el while no sale hasta que la variable boolean sea true
creamos otra variable de tiempo y también la pasamos a sengundo y cuando esa variable menos la ya creada sea >=10 el boolean es true
ejemplo 10 segundos
1
2
3
4
5
6
7
8
boolean salida = false;
double tiempo1= Sytem.nanoTime()/(100000*1000000);
while (!salida){
double tiempo2= Sytem.nanoTime()/(100000*1000000);
if(tiempo1-tiempo2>=10.00){
salida = true;
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 20
Ha disminuido su posición en 14 puestos en Java (en relación al último mes)
Gráfica de Java

Java Tiempo

Publicado por xshaffter (5 intervenciones) el 04/05/2018 09:53:44
Pues, como se comento anteriormente, hay una funcion en java llamada System.nanoTime, la cual nos devuelve el tiempo transcurrido desde un momento fijo (no se realmente cual sea, lo desconozco completamente), pero esta nos sirve para saber el momento en el que algo ocurrio, y para tu problema especifico, se puede hacer una ejecucion un tanto simple:
1
2
3
4
5
6
7
8
9
10
11
int segundosEspera = 60; //si quieres 2 minutos, le pones 120, etc, etc
long inicio, tiempoActual;
inicio = System.nanoTime();
tiempoActual = System.nanoTime();
while(tiempoActual - inicio < segundosEspera*1_000_000_000/*los segundos que quieres esperar multiplicados por 10^9*/){
 
      /*
      inserte el codigo aqui
      */
      tiempoActual = System.nanoTime();
}

a decir verdad, yo prefiero este metodo, ya que, aunque puede ser un tanto mas dificil de leer en ocasiones, evita el usar variables de manera inecesaria, como es el caso de un booleano para salir, ya que podemos declarar el while directamente con la condicion y actualizar al final del mismo ciclo para que no se vuelva infinito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar