Cómo retrasar un ciclo While a intervalos de 1 segundo sin ralentizar todo el código/computadora en el que se está ejecutando el retardo de un segundo (solo un pequeño bucle).Java Delay/Wait
Respuesta
Thread.sleep(1000); // do nothing for 1000 miliseconds (1 second)
¿Esto no detendrá la secuencia de comandos/computadora? –
Esto simplemente pausaría ese hilo en particular en el que se está ejecutando este código. su computadora no se congelará –
Parece que su bucle se ejecuta en el hilo principal y si lo hace sleep
en ese hilo pausará la aplicación (ya que solo hay un hilo que ha sido pausado), para solucionarlo puede poner este código en el nuevo Thread
que corre paralelamente
try{
Thread.sleep(1000);
}catch(InterruptedException ex){
//do stuff
}
esto funciona perfectamente – ERJAN
Como se ha indicado Jigar puede utilizar otro hilo para hacer el trabajo que puede operar, dormir, etc independientemente de otros hilos. La clase java.util.Timer
también puede serle útil, ya que puede realizar tareas periódicas sin tener que ingresar en la programación multiproceso.
Mis formas simples de retrasar un ciclo.
Ya puse los códigos aquí después de no seguir los estándares de stackoverflow.
//1st way: Thread.sleep : Less efficient compared to 2nd
try {
while (true) {//Or any Loops
//Do Something
Thread.sleep(sleeptime);//Sample: Thread.sleep(1000); 1 second sleep
}
} catch (InterruptedException ex) {
//SomeFishCatching
}
//================================== Thread.sleep
//2nd way: Object lock waiting = Most efficient due to Object level Sync.
Object obj = new Object();
try {
synchronized (obj) {
while (true) {//Or any Loops
//Do Something
obj.wait(sleeptime);//Sample obj.wait(1000); 1 second sleep
}
}
} catch (InterruptedException ex) {
//SomeFishCatching
}
//=============================== Object lock waiting
//3rd way: Loop waiting = less efficient but most accurate than the two.
long expectedtime = System.currentTimeMillis();
while (true) {//Or any Loops
while(System.currentTimeMillis() < expectedtime){
//Empty Loop
}
expectedtime += sleeptime;//Sample expectedtime += 1000; 1 second sleep
//Do Something
}
//===================================== Loop waiting
Me gusta la tercera manera, porque puede inhibir todo un núcleo de la CPU y nadie llamaría a este código olor. – Tom
- 1. Java PropertyChangeListener Java
- 2. java
- 3. Referencias legales a Java Java
- 4. Scala - Java =? (O Clojure -? = Java)
- 5. ejecutar código Java en Java
- 6. Eclipse/Java: ¿es dañino importar java. (Namespace). *?
- 7. JDK = Java SE && JDK! = Java EE?
- 8. Java Web Start vs Embedded Java Applet
- 9. Serializar un objeto Java a código Java?
- 10. Compilación de archivos .java externos desde Java
- 11. diferencia entre java bean y java class?
- 12. Juegos Java 2d con Java SWING
- 13. Compilación de Java 7 a Java 6
- 14. Nuevo programador Java, composición básica de Java
- 15. Diferencia entre Java SE y Java EE
- 16. Encriptación AES Java -> PHP -> Java
- 17. Java instanciación
- 18. práctica java
- 19. Java Comparador
- 20. Java hexadecimal
- 21. Java BinarySearch
- 22. Java Annotations
- 23. OpenID Java
- 24. Java genéricos
- 25. Java PBEWithMD5AndDES
- 26. Aprendiendo Java
- 27. Java MouseListener
- 28. Java generics
- 29. descompilación java
- 30. Java Stringbuilder.replace
_sin ralentizar la totalidad code_ elaborar este –
@JigarJoshi Estoy tratando de retrasar este bucle mientras que en intervalos de 1 segundo para mi plugin de Minecraft. Pero la mayoría de los métodos de espera pausan todo el servidor durante el tiempo establecido, en lugar de solo el ciclo –
desea la ejecución del ciclo while durante un período de tiempo fijo y luego nuevamente con el retardo fijo. –