Ver Mensaje Individual
  #7 (permalink)  
Antiguo 16/10/2015, 16:49
agleiva
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: ¿ Hacer que una parte de codigo dentro de main vaya mas lenta ?

Buenas.

Para aclarar un poquito la confusión, y evitar Mateo 15:14, cabe mencionar que la mayoría de las tecnologías de GUI, tanto en java como en otras plataformas, funcionan internamente con un "event loop". Este es un bucle infinito que va refrescando la GUI a medida que van occuriendo cosas en el código, y se van modificando los estados de los objetos que representan los elementos visuales en la pantalla.

Debido a esto, y debido a que estas clases generalmente no son "thread-safe", uno sólo puede modificar los elementos visuales desde el llamado "UI Thread", y a la vez éste thread, o hilo de ejecución, no debe ocuparse con otras tareas que no estén relacionadas a la GUI, ya que hacerlo implica frenar el "event loop" y por lo tanto frenar o congelar la GUI, generando un efecto de "pantalla frizada".

Se deduce de esto, que no es posible entonces ejecutar un Sleep() en el UI thread para simular un retardo en la ejecución del código, sino que se debe realizar este retardo en un thread aparte, para evitar que la pantalla se "frize", y así poder ver a medida que los elementos visuales van cambiando de estado, o se van dibujando o lo que sea.

Como no uso java, no puedo decirte exactamente qué código se debe usar en este lenguaje (en lenguajes modernos es tan simple como poner await Task.Delay(5000); por ejemplo), pero conceptualmente es exactamente igual en todas las plataformas.

Una simple busqueda en google de "java sleep in background thread" nos lleva a este post: http://stackoverflow.com/questions/1...g-periodically

Espero que te sirva.

Un saludo.