Atom Blog

Como usar Threads (hilos) en Java

En este ejemplo se realizara la suma de todos los numeros de una matriz. La dimension de la matriz es de 6000 x 6000.

La suma se realizara de dos formas diferentes:
En primer lugar se realiza la suma secuencial de los valores de la matriz.
En segundo lugar se crean 6 threads, cada uno se encargara de sumar los valores de una fila de la matriz. Luego de esto se calcula la suma de los valores de la filas, obteniendo la suma total de la matriz.


El ejemplo pretende demostrar que la utilizacion de threads es muy importante, ya que mejora el desempeno de los programas que los utilizan.

Para ello hemos calculado el tiempo que tarda en realizarse la suma de los valores de la matriz mediante la utilizacion de thread y si ellos.

En la salida de nuestro programa podremos ver que el tiempo que demora realizarse la suma utilizando threads es menor que cuando no se los utiliza.

El programa se ha dividido en en tres clases:

Clase Matriz:
En esta clase creamos algunas variables como son matriz, suma, tamano.
Ademas se crea un objeto tipo Random para generar numeros aleatorios para llenar la matriz.
En el contructor se crea la matriz con dimensiones establecidas en la clase Main.
En el metodo llenarMatriz() generamos numeros aleatorios entre 0 y 20 y los guardamos en cada una de las posiciones de la matriz.
El metodo synchronized se encarga de guardar en la variable suma los valores obtenidos de las filas de la matriz.

Clase ThreadSuma: 
Esta clase es un thread que se encarga de realizar la suma de los valores de la matriz, para ello se debe especificar de donde a donde se quiere sumar utilizando los parametros inicio y fin. 
El metodo run() del thread es el proceso que se realizara cuando se ejecute el o los threads en la clase Main.
 

Clase Main:
En esta clase realizamos la suma sin threads, calculamos el tiempo que demora el realizar la suma y mostramos en pantalla el valor de la suma y el tiempo demorado.
Ademas creamos los threads que se encargaran de sumar los valores de las filas de la matriz, seguido de esto ejecutamos todos los 6 threads con el objeto execute, de la misma manera calculamos el tiempo que demora en sumar y mostramos en pantalla.

La salida de nuestro programa nos quedara de la siguiente manera:

Como podemos ver, el tiempo utilzando threads es menor al tiempo si utilizar threads.

Para descargar el proyecto hacer click en la siguiente imagen!!





2 comentarios:

  1. Muchas gracias, muy bien explicado y sobre todo en los comentarios dentro del código. Gracias nuevamente!!!

    ResponderBorrar
  2. de todos los ejemplos que he visto sobre hilos, este ha sido el mejor, te felicito y sigue asi

    ResponderBorrar