Professional Documents
Culture Documents
Unidad 2. Hilos
Asignatura:
Programacin orientada a objetos III
Unidad 2. Hilos
Clave:
16142524
1
Programacin orientada a objetos III
Unidad 2. Hilos
ndice
PRESENTACIN DE LA UNIDAD ........................................................................................................................ 3
TEMARIO DE LA UNIDAD.................................................................................................................................. 3
CIERRE DE LA UNIDAD.....................................................................................................................................12
2
Programacin orientada a objetos III
Unidad 2. Hilos
Presentacin de la unidad
Propsitos de la unidad
Competencia especfica
Temario de la unidad
2. Hilos
2.1. Programas con flujo nico
2.1.1. Flujo normal
2.1.2. Ejemplo de un programa con flujo nico
2.2. Programas de flujo mltiple
2.2.1. Creacin de hilos
2.2.2. Estados de hilos
2.2.3. Control de hilos
3
Programacin orientada a objetos III
Unidad 2. Hilos
2. Hilos
Los hilos en programacin, bsicamente, son procesos de ejecucin, de tal manera que si
se programan varios hilos en una sola aplicacin; sta ser capaz de realizar varias tareas
de manera paralela, por lo que este tema resulta de sobremanera til cuando se deban
realizar programas con una gran carga de procesamiento de informacin. A lo largo de esta
unidad siguiendo las lecturas y ejercicios propuestos analizars el manejo de hilos en Java.
Por lo anterior, es importarte que atiendas a las indicaciones posteriores, pues, tendrs que
revisar textos, ejecutar tareas y, al final, realizar tu evidencia de aprendizaje, misma que
dar cuenta de la obtencin de la competencia de la unidad. Dicho lo anterior, entrars en
materia con el tema 2.1. Programas con flujo nico.
Todos los programas, que hasta el momento se han realizado a lo largo de las materias de
POO, han sido de flujo nico, pues las instrucciones de stos se van ejecutando conforme
se van llamando; estas instrucciones pueden estar en diferentes mtodos, o clases, pero
slo se van ejecutando de manera nica conforme son llamadas.
Un programa de flujo nico, tarea nica o mono-hilo utiliza un nico flujo de control para
controlar su ejecucin. Muchos programas no necesitan la potencia o utilidad de mltiples
tareas. Sin necesidad de especificar explcitamente que se quiere un nico flujo de control.
(Froufe, 2009, pg. 203)
1
Los textos los encontrars en la seccin descargables de la unidad.
4
Programacin orientada a objetos III
Unidad 2. Hilos
interfaz grfica sugerida se puede ver en la Figura. Programa de flujo nico con impresin
de nmeros.
* Nota: Se presenta slo el mtodo que realiza la impresin de los nmeros, la interfaz
grfica que manejar la informacin ser omitida, pues el cdigo para realizarlo ya se revis
en POO2.
En este tema lo importante es que comprendas que: todos los programas realizados con
anterioridad manejan un flujo nico de ejecucin, para ello puedes consultar cualquiera de
los cdigos proporcionados en las tres entregas de la materia de POO.
5
Programacin orientada a objetos III
Unidad 2. Hilos
Cada hilo realiza una tarea en especfico, al tener varios hilos ejecutndose, se tendrn
varias tareas corriendo en el mismo programa. Lo que permitir que en el mismo programa
se estn realizando diferentes actividades al mismo tiempo. Por ejemplo si se tiene un
sistema en red dentro de una empresa y se requiere, que al realizar una venta, se actualice
la cuenta del cliente, las ventas del vendedor y el inventario un programa mono-hilo se
deber ir realizando cada tarea una a una, de manera que hasta que se realice un registro
podr procederse a realizar otro, a diferencia de un programa multi-hilo, donde podrn
registrarse todas las tareas al mismo tiempo.
Mientras que los programas de flujo nico pueden realizar su tarea ejecutando las sub-
tareas secuencialmente, un programa multitarea permite que cada tarea comience y termine
tan pronto como sea posible. Este comportamiento presenta una mejor respuesta a la
entrada en tiempo real. Para enriquecer la informacin consulta en el Java 2 Manual de
usuario y tutorial de (Froufe, 2009, p. 215); en que se muestran los diferentes estados en
los que puede estar una tarea (hilo), as como la comunicacin que se puede generar entre
diferentes hilos para lograr una aplicacin ms robusta, en este texto tambin encontrars
bloques de cdigo aplicando los conceptos que se presentan para que comprendas como
utilizarlos en un programa.
Los hilos de ejecucin en Java estn implementados en la clase thread, que forma parte del
paquete java.lang. Cada hilo (thread) tiene un principio, un flujo de ejecucin y un fin
definidos, pero no es una entidad independiente sino que debe ejecutarse en el contexto de
un programa (Joyanes, 2002). Por lo tanto, revisa el tema 12.5. Hilos de tipo demonio en
Joyanes (2002, p. 317), en dicho texto encontrars como crear y manejar hilos demonio, los
cuales permiten ofrecer servicios a otros hilos de ejecucin existentes dentro del mismo
proceso, la obra te ofrece un pequeo ejemplo para que aprendas a crear hilos demonio y
con ello logres desarrollar programas con hilos de este tipo.
Para conocer ms a fondo el manejo de hilos y las clases y mtodos que ayudan con su
manipulacin y utilizacin, abre el texto Sanchez, J. (2004, p. 185) y consulta una breve
introduccin al tema de hilos, el cual tambin se conoce como multitarea, que es la
posibilidad de que una computadora realice varias tareas a la vez. Esa introduccin te
ayudar a comprender mejor el concepto de hilo.
6
Programacin orientada a objetos III
Unidad 2. Hilos
encontrar todo el aspecto tcnico con respecto al manejo de hilos, slo debers moverte en
el men para revisar temas ms avanzados.
Ahora, revisa el Tema 9.2 Extensin de la clase thread de Programador Certificado Java 2,
en Martin, (2010, p. 397) donde podrs ver cmo crear un hilo, as como los mtodos ms
utilizados para manejarlos, estudiando este texto y analizando el cdigo que presentan
logrars tener una visin ms concreta sobre cmo programar con hilos; se recomienda que
crees los programas con los bloques de cdigo presentados en esta obra para que vayas
comprendiendo y practicando al mismo tiempo.
Para finalizar y despus de que revisaste los textos sugeridos sobre el tema de hilos, se
presenta un ejemplo de cmo crear y manipular hilos en un programa Java, es
recomendable que realices tu propio programa basndote en la sintaxis que se muestra en
el ejemplo, todo ello para que analices a profundidad el cdigo y logres aplicarlo en las
actividades que realizars para este tema.
El cdigo est comentado, sigue los comentarios cuidadosamente para que comprendas el
cdigo presentado.
4 * mtodo run.
5 */
7 {
11
7
Programacin orientada a objetos III
Unidad 2. Hilos
15
16 /**
19 */
20 public HiloMensaje()
21 {
23 }
24
25 /**
28 * el hilo.
29 */
31 {
nombreHilo = nombre;
32 corriendo = false;
33 }
34 /**
* Devuelve el valor de la variable
35 * nombreHilo.
*/
36
public String getNombre()
37 {
return nombreHilo;
38 }
39
/**
40 * Este mtodo se manda llamar de forma automtica cuando se
* inicia la ejecucin del hilo. En otras palabras, en este mtodo
8
Programacin orientada a objetos III
Unidad 2. Hilos
65
66
9
Programacin orientada a objetos III
Unidad 2. Hilos
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
1 /**
3 *
4 */
10
Programacin orientada a objetos III
Unidad 2. Hilos
6 {
7 /**
9 *
11 */
13 {
16
19
22
25 //continan su ejecucin.
26 Thread.currentThread().sleep(2000);
27
28 System.exit(0);
29 }
30 }
11
Programacin orientada a objetos III
Unidad 2. Hilos
Para concluir este tema, realiza la Actividad 1. Flujo nico VS flujo mltiple que se presenta
en el documento: Actividades de la unidad, donde debers distinguir el flujo nico del flujo
mltiple de ejecucin.
Por otra parte en la Actividad 2. Programa multi-flujo. Crears un programa que presente
flujo mltiple de ejecucin.
Autoevaluacin
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta
segunda unidad del curso, es necesario que resuelvas la autoevaluacin de la unidad.
Para concluir la unidad debers realizar la Evidencia de aprendizaje. Programa con hilos de
esta unidad, la cual tiene como objetivo que realices un programa en Java que muestre el
uso y manipulacin de hilos.
Autorreflexiones
Cierre de la unidad
Es aconsejable que revises nuevamente la unidad en caso de que los temas que se acaban
de mencionar no te sean familiares o no los recuerdes, de no ser este tu caso, ya ests
12
Programacin orientada a objetos III
Unidad 2. Hilos
preparado(a) para seguir con la unidad tres, en donde continuars con la revisin del uso de
sockets.
Para saber ms
Para que puedas ejecutar los programas que se te presentan, as como las actividades es
importante que instales un IDE en tu computadora, se recomienda NetBeans, puedes
descargarlo de forma gratuita de la siguiente liga: http://netbeans.org/downloads/
Es recomendable que pruebes los cdigos que se presentan en los ejemplos que se
encuentran en cada fuente de consulta mencionada.
Fuentes de consulta
13