Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] ¿ Hacer que una parte de codigo dentro de main vaya mas lenta ?

Estas en el tema de ¿ Hacer que una parte de codigo dentro de main vaya mas lenta ? en el foro de Java en Foros del Web. Me interesaría ralentizar la velocidad de ejecución de código de una parte que se este ejecutando dentro del método main() pero sin estar escribiendo por ...
  #1 (permalink)  
Antiguo 15/10/2015, 09:35
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 3 meses
Puntos: 1
Busqueda ¿ Hacer que una parte de codigo dentro de main vaya mas lenta ?

Me interesaría ralentizar la velocidad de ejecución de código de una parte que se este ejecutando dentro del método main() pero sin estar escribiendo por cada instrucción otra tipo retardo con Thread.sleep(retardo); Es decir que el retardo fuera ya automatico. Ralentizar el código en una parte del programa como 1000 veces o mas para que pareciera un ordenador mas lento y se viera por ejemplo el dibujo de graficos lentamente...

Por ejemplo algo asi,
Código:
... // código

public static void main(String[] args)  {
  ... // codigo
  Ralentizar(1000); // Ralentiza cada instruccion dentro de Dibujo() a 1000veces 
  Dibujo();
  Ralentizar(0); // Vuelve al estado de ejecución normal
  ... // Mas codigo 
}	

... // Mas código
La función ralentizar debiera tardar igual en cualquier tipo de ordenador. Por ejemplo si el dibujo tarda 1msg con Ralentizar(5000) me tardaría 5 segundos viéndolo ejecutado en cualquier ordenador.
  #2 (permalink)  
Antiguo 15/10/2015, 12:09
 
Fecha de Ingreso: noviembre-2010
Mensajes: 19
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: ¿ Hacer que una parte de codigo dentro de main vaya mas lenta ?

Quizas te sea de ayuda este tutorial:

http://aquiseprograma.co/2015/10/como-utilizar-java-lang-concurrent-executorservice/
  #3 (permalink)  
Antiguo 16/10/2015, 02:56
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años
Puntos: 31
Respuesta: ¿ Hacer que una parte de codigo dentro de main vaya mas lenta ?

Puedes hacer una cosa para ver como funciona java.

Hazte un jframe y añadele únicamente 1 botón.

En el codigo que ejecuta el botón crea otro botón, radioboton, linea u otro elemento gráfico.

Ahora coloca 1 punto de interrupción en la primera linea de ejecución del botón y ejecuta tu programa en modo depuración. Cada interfaz de programación lo hace de 1 forma pero normalmente tienen ese modo de ejecucion.

Y observa el resultado. Verás como va ejecutandose linea a linea. Y no se puede ejecutar 1 linea despacio. Cada linea en el momento de ejecutarse se ejecuta inmediatamente. Si tienes una linea que diga int n=3 podrás retrasar el momento de ejecución de esa linea. Pero no puedes hacer que esa línea se ejecute despacio.

Si tu quieres que una linea pase de no estar visible a verse 1 punto y que ese punto se junte con otro punto a su lado, y luego aparezca un tercer punto pegado a ellos, y vayan apareciendo poco a poco puntos pegados al anterior y se vaya dibujando poco a poco una linea que se vaya alargando hasta su longitud final en vez de que de no ser visible pase toda la linea a ser visible toda a la vez... entonces lo que necesitas es una animación.

Yo nunca he hecho animaciones en java pero sean como sean, se harán ejecutando ordenes linea a linea... y cada instrucción se ejecutará a la velocidad que el microprocesador pueda. Ni más deprisa ni más despacio.
  #4 (permalink)  
Antiguo 16/10/2015, 03:25
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: ¿ Hacer que una parte de codigo dentro de main vaya mas lenta ?

Me lo he estado mirando pero no me aclara lo que busco
  #5 (permalink)  
Antiguo 16/10/2015, 03:27
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: ¿ Hacer que una parte de codigo dentro de main vaya mas lenta ?

Si no se puede ralentizar el código almenos debe haber alguna manera de ejecutar el código lentamente como si fuera un debugger para simularlo.
  #6 (permalink)  
Antiguo 16/10/2015, 16:27
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años
Puntos: 31
Respuesta: ¿ Hacer que una parte de codigo dentro de main vaya mas lenta ?

Siempre se pueden crear un monton de puntos para dibujar una línea. Pero eso es una chapuza.
  #7 (permalink)  
Antiguo 16/10/2015, 16:49
(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.
  #8 (permalink)  
Antiguo 19/10/2015, 18:38
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: ¿ Hacer que una parte de codigo dentro de main vaya mas lenta ?

Gracias por la repuesta, me lo estoy mirando pero el tema es un poquito complejo...

Etiquetas: lenta, main, parte, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:33.