elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ejemplo real sobre thread
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejemplo real sobre thread  (Leído 1,935 veces)
bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
Ejemplo real sobre thread
« en: 13 Diciembre 2016, 17:31 pm »

Buenas a todos de nuevo!!

ahora estoy tratando de enteder los hilos de java , he leido un par de escritos y todos con el mismio esquema de contar numeros hasta 10 y cosas asi ,si es posible alguien me podria mostrar un ejemplo de uso diario de los hilos.  gracias de antemano.


En línea

gracias por responder mis dudas
kingcreek

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Ejemplo real sobre thread
« Respuesta #1 en: 13 Diciembre 2016, 19:25 pm »

Entendiendo para que sirven puedes implementar una aplicacion real.
Sin mucho tecnicismo un thread sirve para ejecutar varios procesos a la vez reduciendo el tiempo de la ejecucion total, o cargar en ellos codigos de largo trabajo sin bloquear la UI del programa.

Por ejemplo, tienes un programa que ejecute una funcion pesada que tarda 20 segundos en realizarse y otra de 15 segundos. El total de ejecucion sin hilos es de 20 + 15 segundos y hasta que este no termine, la interfaz estara "congelada" (dando la impresion de que el programa deja de funcionar de cara al usuario final), ademas de que hasta que no termine dicha funcion, no podras realizar nada mas.

Para arreglar esto, se usan hilos, puedes probarlo tu mismo haciendo este sencillo ejemplo.

Código
  1. for(int i = 0; i <= 9999999; i++)
  2. {
  3.    System.out.print("Numero " + i);
  4. }
  5.  

Si ejecutas ese codigo, hasta que no terminase el bucle no podrias seguir usando la aplicacion, se quedara ejecutandolo hasta que termine.
Ahora si lo ejecutas en un hilo:

Código
  1. Thread thread = new Thread(){
  2.    public void run(){
  3.      for(int i = 0; i <= 9999999; i++)
  4.      {
  5.          System.out.print("Numero " + i);
  6.      }
  7.    }
  8.  }
  9.  
  10.  thread.start();
  11.  

De esa manera veras que sigue ejecutando el codigo del bucle sin congelar la UI permitiendo por ende, que puedas realizar mas tareas simultaneamente.


En línea

bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
Re: Ejemplo real sobre thread
« Respuesta #2 en: 13 Diciembre 2016, 19:33 pm »

Excelente ejemplo . entiendo eso , es igual con los Socket y Base de datos usando JDBC al parecer un hilo va bien con la GUI pero seria igual para otras herramientas ?

y supong que ese thread.start() llama automaticamente this.run cierto?  y lo puedo llamar donde yo desee?
En línea

gracias por responder mis dudas
kingcreek

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Ejemplo real sobre thread
« Respuesta #3 en: 13 Diciembre 2016, 21:22 pm »

Si puedes llamarlo en cualquier momento.
Para otras herramientas que no usen UI sirve de igual manera.
Como ejemplo un poco cutre, imaginate que tienes una aplicacion que imprime por consola 2 operaciones matematicas, la primera tiene un tiempo de 20 segundos, la segunda de 30.
Si no usas hilo, la aplicacion tardara 50 segundos en haber mostrado el resultado de ambas operaciones.
Si colocas una de ellas en un hilo, y otra sin el, o incluso ambas en un hilo, ambas operaciones empezaran a realizarse a la vez por lo que tras 20 segundos te imprimira el primer resultado y 10 segundos mas tarde, o sea 30 segundos desde el inicio de esas operaciones te retornara el segundo resultado, habras ahorrado 20 segundos de ejecucion.
A grandes rasgos podrias aplicarlo para cosas asi.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines