Taller Hilos
Taller Hilos
Taller Hilos
pág. 1
Hilos con Java
Taller Hilos
Docente
Victor Agusto Pedraza Bonilla
pág. 2
Resumen
Java que permite crear 3 hilos, los cuales deben realizar las series Fibonacci y Factorial
manera simultánea lo que permite que los cálculos de las series se lleven a cabo por
separado.
Se hace uso de la interfaz Runnable de Java para proporcionar a las clases Hilo1,
Hilo2 e Hilo3 capacidad de ser hilos , además se hace de los objetos BigInteger para
además se explica paso a paso como se concibe la solución del problema planteado.
Abstract
This document briefly explains how to develop a program in the Java language that
allows creating 3 threads, which must perform the Fibonacci and Factorial series
according to the number of iterations entered by the user, these threads execute
simultaneously which allows the series calculations are carried out separately.
The Java Runnable interface is used to provide the Hilo1, Hilo2 and Hilo3 classes with
extremely large values, in particular for the Factorial series, it is also explained step by
pág. 3
Contenido
Objetivos ....................................................................................................................................... 5
General ...................................................................................................................................... 5
Específicos ................................................................................................................................. 5
Lenguaje Java ................................................................................................................................ 5
El compilador Java ..................................................................................................................... 6
La JVM ....................................................................................................................................... 6
Estructura del programa ............................................................................................................... 6
Explicación del código ................................................................................................................... 7
Método main ............................................................................................................................. 7
Instanciar las clases hilo ............................................................................................................ 8
Definición de las clases Hilo1, Hilo2 e Hilo3 .............................................................................. 9
La interfaz Runnable................................................................................................................ 12
La clase que realiza el trabajo sucio ........................................................................................ 12
Atributos privados ............................................................................................................... 13
Métodos de la clase padre .................................................................................................. 13
Ejecución ..................................................................................................................................... 17
Resultados ................................................................................................................................... 20
Bibliografía .................................................................................................................................. 21
pág. 4
Objetivos
General
Desarrollar una aplicación en el lenguaje Java que permita crear 3 hilos donde el
Por medio de creación de tres Hilos (Threads) el programa debe hacer lo siguiente
Específicos
en paralelo.
operación a realizar.
Java.
Lenguaje Java
plataforma Java y sus componentes. Vea Recursos para aprender más acerca de los
pág. 5
El compilador Java
código con las reglas de sintaxis del lenguaje, luego escribe los códigos byte en
archivos .class. Los códigos byte son instrucciones estándar destinadas a ejecutarse
La JVM
escribió la JVM. La JVM interpreta los códigos byte del mismo modo en que una
CPU interpretaría las instrucciones del lenguaje del conjunto. La diferencia es que la
es el corazón del principio «escrito una vez, ejecutado en cualquier lugar» del
lenguaje Java.
threads e hilos.
pág. 6
Explicación del código
Método main
En el método main se procede a instanciar la clase base para poder proporcionar una
entrada al usuario, esta se lleva a cabo desde el método inputUser, el cual genera un
pág. 7
JOptionPane.showInputDialog para ingresar la cantidad de iteraciones que tendrá las
serie y regresa un (Caules, 2014) BigInteger para que se tome en los hilos.
Se define BigInteger como tipo de dato para la cantidad de sería ya que puede
ser un valor de 1 hasta 100000000000 por lo que un tipo de dato primitivo con int o
Una vez que se define la cantidad de iteraciones se procede a crear los objetos de
muestra la imagen
pág. 8
Definición de las clases Hilo1, Hilo2 e Hilo3
únicamente define el constructor y un método llamada run que indica el inicio del hilo
Esta clase se convierte en una clase hijo ya que se extiende de la clase MisHilos
El método run además hace llamado al método operación que está en la clase
pág. 9
Ilustración 6 Definición de la clase Hilo 2
únicamente define el constructor y un método llamada run que indica el inicio del hilo
Como se observa esta clase es muy similar a la clase Hilo1 , con la única
diferencia que esta se encarga de realizar la operación factorial, como podemos observar
Al igual que la clase Hilo1, también es una clase hija de la clase padre MisHilos.
pág. 10
Ilustración 7 Definición clase Hilo3
únicamente define el constructor y un método llamada run que indica el inicio del hilo
Como se observa esta clase es muy similar a la clase Hilo1 e Hilo2 , con la
diferencia que esta puede realizar bien sea la serie Fibonacci o Factual, según su
pág. 11
Al igual que la clase Hilo1 e Hilo2, también es una clase hija de la clase padre
MisHilos.
La interfaz Runnable
Esta interfaz permite la creación de un hilo en java de manera muy sencilla, por
lo que las clases Hilo1, Hilo2 e Hilo3 la implementan. Simplemente con sobrescribir el
método run las clases se convierten en hilos dentro de la ejecución del programa.
pág. 12
Como se observa en la anterior imagen se aprecia que esta clase padre contiene 8
Atributos privados
una serie, bien sea Fibonacci o Factorial, este dato se toma en el main desde la entrada
de usuario.
objetos no admiten operadores primitivos, es por ello que esta variable y el método
Los atributos anteriormente mencionados hacen parte de las tres clases hija,
desde el momento que se define el extends a la clase padre, con este se logra disminuir
la cantidad de líneas.
opcionUsuario: Este método provee una lista desplegable para que el usuario
pág. 13
Retorna un String que contiene el nombre de la serie, es decir la palabra
Fibonacci o Factorial, este return se toma en el main y se evalúa que serie debe realizar
el hilo 3.
serie a realizar, admite un entero (1 o 0) para definir el tipo de operación a realizar por
un hilo.
pág. 14
Ilustración 11 Método base del programa
En este método se define los bucles que permite obtener el resultado de una
serie, como las variables son de tipo BigInteger se debe implementar lo métodos
pág. 15
Ilustración 12 Recursividad Fibonacci
milisegundos al hilo de la clase 3 solo cuando ejecuta la serie factorial, puesto que es
BigInteger, puesto que estas clases no permiten el uso de los operadores aritméticos,
lógicos ni relacionales en sus valores, ya que es imposible comparar una referencia del
pág. 16
Ejecución
Para iniciar el programa debe compilar el mismo bien sea directamente desde la
línea de comandos con Javac o con un editor para Java, este caso se opta por la opción 2
y el editor Netbeans.
es posible observar como el hilo principal ya está en ejecución , pero hasta este
Una vez ingresado el valor para las iteraciones el sistema, solicita seleccionar la
serie a realizar, en este caso se observa que los dos hilos de la clase Hilo1 e Hilo2 ya
pág. 17
Ilustración 15 Ejecución de hilos en paralelo
esto se aprecia ya que el hilo principal del programa solicita seleccionar una serie a
pág. 18
Para continuar con la ejecución del tercer hilo se debe seleccionar una serie
pág. 19
Resultados
pág. 20
Bibliografía
pág. 21