Duda en java, puto timer

P

Hola buenas, estoy haciendo un programa en java con eclipse y me he quedado atascado en una tonteria:
Resulta que tengo un bucle while y quiero que la condicion sea, que se repita en x tiempo.
Dicho de otra manera, se tiene que ejecutar durante 5 minutos por ejemplo, pero no me aclaro con la funcion timer. Alguien me podria hechar una mano, gracias!!!

while(){
  for(Persona x: listaPersonas){
    int m = random.nextInt(lmteInf_0, lmteSup_0);
    if(m==1){
      int xV= x.getX();
      int yV= x.getY();
      int xN = random1.nextInt(Ri, Rs);
      int yN = random1.nextInt(Ri, Rs);
      while (dentroRango(xN,yN,city)==false && city.estaVacio(xN,yN)==false){
        xN = random1.nextInt(Ri, Rs);
        yN = random1.nextInt(Ri, Rs);
      }
PiTaGoRaS

No sé cúal es la función "timer" a la que te refieres, pero si lo que quieres es que ese bucle while tenga como condición de salida que el tiempo de ejecución sea superior a 5 min pues es bien fácil:

long finishTime = System.currentTimeMillis() + 300000;

while (System.currentTimeMillis() < finishTime)
{
      // aquí tu código
}

PD: No hace falta que pongas los == false, simplemente usa el operador de negación "!" delante .

JuAn4k4

Y si lo que quieres es un evento periodico que se ejecute cada X tiempo, la estructura que se suele seguir es esta

Y = ticks del timer que hacen falta para cubrir X tiempo.

int siguiente;

[...]

siguiente = tiempo()

while (1){
// Codigo

siguiente = siguiente + Y;
delay_until (siguiente);
}

delay_until puedes implementarlo como puedas, si tienes algun metodo del reloj que haga eso usalo que igual lo tienen con esperas no activas o algo.

Usuarios habituales