gobolino escribió:Una preguntilla:
Quiero que mi programa espere unos segundos antes de hacer la siguiente instrucción. El método NO es un hilo, es un método normal. Lo he intentado con un
for(int i=0;i<10000000;i++)
{
i++;
}
Con un while similar, y nada. Se ve que el interprete optimiza, y no entra en el while. Si pongo dentro del bucle un System.out.print(" ") por ejemplo, ya sí lo hace, pero me parece que ya bastante cutre es meter ese bucle, como para encima ponerme a imprimir líneas así como así.
Mmmm ese i++ de dentro del bucle para que es??? con el de la decalración del for tienes bastante. A parte de eso si que entra ne el bucle, lo unico que lo hace muy rapido y no te enteras
El interpetre (JVM) no puede optimizar nada, para eso está el programador
. Con un
while o
repeat te pasará lo mismo, creo que esa no es la solución.
gobolino escribió:
A) como opcion más fina, un wait(), pero creo que solo se puede hacer con hilos, y este método no es un hilo, ni quiero que lo sea. Algo similar a wait?
Tampoco me parece fina la opción del
wait(), en un thread un wait hace que el thread se duerma pero para que continue necesita que otro hilo se lo comunique o bien con un
notify() o con un
notifyall()gobolino escribió:B) como opcion menos fina, una instruccion al estilo del NOP de ensamblador. Algo que no haga nada, pero que haga que se me ejecute ese bucle. Aunque creo que también pasaría de mí el intérprete...
Hasta lo que yo se en java no podemos bajarnos tanto de nivel como para insertar ensamblador o similares en el copdigo
gobolino escribió:Ah, también añadir que quiero que se me espere unos 5-10 segundos, pero no me hace falta que sea un numero concreto, así que con un for grande me valdría, aunque no controlase yo el numero de segundos exacto.
Mo consejo es que utilices threads, en este caso con uno te basta, utilizando el metodo
sleep(int milisegundos) haces que se esperen esos milisegundos antes de ejecutar la siguiente isntrucción. Si no quieres utilizar threads en esa clase, siempre puedes crearte una clase que contenga un metodo llamado pro ejemplo
espera_tiempo(int segundos) al que le pasas el numero de milisegundos y este hace un
sleep(segundos) esperando asi esos segundos que quieres.
Saludos
P.D: Me parece la solucion mas fina mas elegante y mas optimizada.