2. PRACTICA No. 1
Parte 1
Procesos concurrentes o Hilos para Diseñar un servidor Web
TIPO DE
PRACTICA
PRESENCIAL X AUTODIRIGIDA X REMOTA
PORCENTAJE
HORAS DE LA
PRACTICA: 2
TEMÁTICAS
DE LA
PRACTICA
Hilos sencillos
El constructor de un Hilo
Estados de un Proceso Concurrente o Hilo
La clase Thread
Métodos utilizados en la construcción de un Hilo
Ejercicios
Ejercicios propuestos para que los estudiantes los desarrollen independientemente.
INTENCIONALIDADESFORMATIVAS
PROPÓSITO
Proporcionar los conceptos sobre la clase Thread para identificar los estados de un
Proceso concurrente utilizando la programación orientada a objetos.
OBJETIVOS
Analizar los estados de un proceso concurrente para la creación de Hilos sencillos
verificando su funcionamiento.
COMPETENCIAS
Competencia general
Competencia específica del ser profesional
• Interpretar las definiciones de los procesos concurrentes identificando los estados o
ciclo de vida de un Hilo o Thread para aplicarlos en la construcción del servidor Web en
java.
3. Competencia del hacer profesional
• Diseñar y construir un servidor Web que pueda procesar una petición por medio de un
Hilo utilizando un explorador de Internet visualizando el puerto de conexión y el tiempo
que transcurre en conectarse.
Competencia del saber ser profesional
• Asumir la aptitud para reconocer que los conceptos sobre procesos concurrentes o hilos
(Threads) son necesarios para aplicarlos en las redes de datos.
FUNDAMENTACIÓN TEÓRICA
4. Qué es un Hilo: Un Hilo es un proceso que se ejecuta al mismo tiempo que otro proceso. Esta concurrencia
es artificial ya que la forma de ejecución es de la siguiente manera:
Cuando arranca un proceso A y se congela durante u período de tiempo y durante ese período en que A está
congelado se ejecuta un proceso B y dura un determinado tiempo. Luego de que el proceso B está congelado
un tiempo se ejecuta nuevamente el proceso A otro período de tiempo y se congela y durante esa
congelación del proceso A vuelve a ejecutarse el proceso B y así hasta terminar alguno de los procesos ya
sea el proceso A o el proceso B o ambos al tiempo.
Un hilo o lo que es lo mismo un proceso concurrente, está siempre en alguna de los siguientes estados:
1. Naciendo: Un Hilo nace cuando se define por medio de la clase Thread, por ejemplo: hilo=new
Thread();
2. Listo para ejecutarse: Se consigue con la instrucción: hilo.start(); este inserta en la cola de
procesos concurrentes, el proceso hilo y lo alista para se ejecutado.
3. Ejecutándose: Cuando el procesador determina que el proceso está en la cabeza de la cola de
procesos concurrentes en espera, lo lleva al estado “Ejecutandose” que es el estado en el cual el
proceso está corriendo o tiene el control del procesador.
4. Bloqueado: Este es el estado en el cual el hilo congela y da paso a que otro proceso concurrente
entre a ejección. Se dice que un hilo está bloqueado si:
4.1 Está durmiendo
4.2 Está suspendido
4.3 Está esperando
5. Muerto: Un proceso concurrente queda en este estado, cuando termina normalmente su
ejecución o cuando fue finalizado por otro proceso concurrente exterior a él.
La clase Thread: Esta clase se utiliza para definir objetos denominados hilos, los cuales representan procesos
concurrentes. Sus métodos son: start(), stop(), suspend(), yield(), run(), resume(), sleep(), isAlive(),
interrupt(), currentThread(), getname(), setname(), toString(), etc.
El constructor: Se ejecuta cuando se crea el hilo. Existen dos constructores:
El primero lo deja sin nombre por ej: Thread hilo=new Thread();
Y el segundo, al hilo se le asigna un nombre por ej: Thread hilo=new Thread(“Nombre del hilo”);
Método void start(): Este método inicia un hilo. Para iniciar el hilo, start() activa implícitamente un
método que obligatoriamente tiene el hilo y se denomina run(), start() invoca al método run(), luego de
ejecutarse el método start() el control se pasa al hilo llamado. Se usa así:
hilo.start();
Método void stop(): Finaliza el hilo. La instrucción es: hilo.stop();
Método void sleep(long n): Este método duerme o congela un hilo un período de tiempo igual a n
milisegundos. Durante este período se ejecuta otro hilo y cuando aquel hilo queda congelado otro período y
hayan pasado n milisegundos, este hilo reinicia su ejecución. Se usa así:
hilo.sleep(1000);
Método void run(); Este método se debe incluir dentro de todos los hilos y es ejecutado automáticamente al
arrancar el hilo usando el método start(). Se usa así: hilo.run();
5. DESCRIPCIÓN DE LA PRACTICA
PRÁCTICA PARA CONSTRUIR UN HILO: Para construir un hilo, debemos definir una nueva clase
que hereda la clase Thread y debemos redefinir el método run(), el cual ejecutará las tareas para las cuales
estamos definiendo el hilo. Por ejemplo para construir un hilo que escriba los números pares del 1 al 20, y
otro hilo para los números impares del 1 al 20, luego se debe definir la clase de la siguiente manera: Entrar
a Netbeans, allí se da clic en File-New Project- en la ventana emergente seleccionar la categoría java
seguido de Java Application y next. Después escribir el nombre del proyecto que puede ser en minúscula o
mayúscula y con espacios si así lo requieren, en el caso del ejemplo escribir Servidores WebconHilos
revisando que el cuadro de verificación Create main Class esté seleccionado y clic en next para terminar.
Una vez, creado el nombre del proyecto se procede a crear un Applet (conceptos que vienen de la
programación orientada a objetos). Donde lo puede hacer, dando clic con el botón derecho del Mouse en el
nombre del proyecto, new y seleccionar Applet, si no se encuentra la opción, entonces, seleccionar other y
la categoría java y dentro de la sección de tipos de archivos (File Types), buscar la opción Applet y
seleccionarla, en la siguiente ventana emergente escribir el nombre de la clase puede ser
HilosNparesimpares y terminar con finish.
Al terminar deben seleccionar el nombre del Applet “HilosNparesimpares” y agregar el siguiente
código, donde se refleja la utilización de los métodos que controlan los hilos en java.
import java.applet.Applet;
import java.awt.*;
/**
* @author ebarajas
*/
public class HilosNparesimpares extends Applet {
int sw;
public HilosNparesimpares(){
sw=0;
}
public void init() {
sw=1;
resize(300,300);
}
public void paint(Graphics g){
if(sw==1)
8. Además, el Applet hace referencia a los métodos paint(), donde se inicia a ejecutar el Applet, creando
dos procesos que se van a ejecutar en forma concurrente para los número pares e impares y para esto
se utiliza el concepto de herencia en java. Una vez, creado el hilo se hace la llamada al método run().
Para ver su ejecución, se oprime la tecla shift + F6 y se obtiene la figura No. 1 como salida.
Figura No.1 Creación y Ejecución de dos Hilos
Analice, la ejecución y podrá observar que se escribe un número par se espera un segundo o mil
milisegundos y después se visualiza un número impar, se espera un segundo y después se visualiza un
número par. Esto es lo que se llama procesos concurrentes.
Ejercicio de propuesta para realizar en su tiempo independiente.
1. Construir dos hilos el primero debe visualizar una imagen en forma horizontal cada 1 segundo y el
segundo hilo debe visualizar un círculo cada 2 segundos en forma vertical.
2. Crear dos hilos, el primero debe visualizar un ícono como imagen y se debe congelar durante 1000
milisegundos, el segundo hilo debe visualizar las letras del alfabeto en mayúscula, se debe visualizar la
imagen el número de veces que tiene el alfabeto castellano.
RECURSOS A UTILIZAR EN LA PRACTICA
MATERIALES QUE DEBEN LLEVAR MATERIALES QUE LE SERAN
SUMINISTRADOS EN EL
LABORATORIO
Un PC personal
Portátil, no es obligatorio.
Todo el software necesario
9. SOFTWARE A UTILIZAR EN LA PRACTICA
Netbeans versión 7.0 o superior.
Internet
METODOLOGÍA
PROCEDIMIENTO
Ejecutar el IDE de Netbeans
Crear un proyecto tipo Java Application
Crear una clase java con herencia a los Applets
Definir una variable que actúe como un switch para tener el control en el momento de
construir el hilo.
Analizar en qué momento se ejecuta CADA ESTADO del hilo o ciclo de vida del hilo.
Seguir el procedimiento de la guía paso a paso.
SISTEMA DE EVALUACION
Vale el 10% del 20% del primer corte, de acuerdo a las Rúbricas de Evaluación.
INFORME O PRODUCTOS A ENTREGAR
Código y Sustentación de los ejercicios propuestos en la guía No. 1
10. RUBRICAS DE EVALUACION
CRITERIOS DE
EVALUACION
4.5 - 5.0 4.0 - 4.5 3.0 - 3.5 2.5 - 3.0 CALIFICACION
1.- Definiciones
No es copia fiel
de los textos
consultados sino
una síntesis de
ideas completas y
claras del tema.
Excede a cuatro
cuartillas o no
alcanza a cubrir
una.
Algunos párrafos
son copias fieles
de los textos
consultados.
Algunas ideas del
tema están
cortadas.
No se presenta de
manera clara
y completa. La
relación con el
problema planteado
es prácticamente
incongruente. El 60%
del tema es copiado.
Realiza un 50% ó
60% de los
experimentos,
mencionando el
procedimiento de
manera
completa incluyendo
el material y equipo
utilizado. Las
respuestas son
congruentes con los
experimentos
realizados.
2.- Desarrollo de la
Práctica
Realiza todos los
experimentos,
mencionando el
procedimiento de
manera completa,
incluyendo el
material y equipo
utilizado. Las
respuestas son
congruentes con
los
experimentos
realizados.
Realiza un 80% de
los
experimentos,
mencionando el
procedimiento de
manera
completa
incluyendo el
material
y equipo utilizado.
Las
respuestas son
congruentes con
los experimentos
realizados.
Realiza un 50% ó
60% de los
experimentos,
mencionando el
procedimiento de
manera
completa incluyendo
el material
y equipo utilizado.
Las
respuestas son
congruentes con
los experimentos
realizados.
Realiza un 50% ó
60% de los
experimentos,
mencionando el
procedimiento de
manera
completa incluyendo
el material
y equipo utilizado.
Las
respuestas son
congruentes con
los experimentos
realizados.
3.- Interpretación,
Análisis de los
Resultados
Recopila y ordena
los datos en
relación al
procedimiento. Se
presentan los datos
en tablas,
gráficas, dibujos,
etc. claramente
identificados. Los
datos se
interpretan y
analizan
comparativamente
con la
información
bibliográfica
consultada.
Presenta datos
ordenados en
relación al
procedimiento. Se
presentan en
tablas, gráficas,
dibujos, etc.
claramente
identificados, se
interpretan y
analizan
parcialmente en un
80%.
Tiene datos
parcialmente
ordenados, presenta
algunas
tablas o gráficas, los
resultados
se interpretan y
analizan en 50%
ó 60%
Tiene datos
parcialmente
ordenados, presenta
algunas
tablas o gráficas, los
resultados se
interpretan y analizan
en 50%
ó 60%
4.- Conclusión Deduce el
comportamiento
de la(s)
variable(s)
estudiada(s) a
partir del
problema
planteado.
Rechaza o
acepta la hipótesis
e incluye
propuestas de
mejora o genera
nuevos problemas.
Deduce el
comportamiento
de
la(s) variable(s)
estudiada(s) a
partir del
problema
planteado.
Incluye el rechazo
o la
aceptación de la
hipótesis, pero
no las propuestas
de mejoras.
Deduce el
comportamiento de
la(s) variable(s)
estudiada(s) a
partir del problema
planteado.
No incluye el
rechazo o
aceptación de la
hipótesis ni
propone mejoras.
Deduce el
comportamiento de
la(s) variable(s)
estudiada(s) a
partir del problema
planteado.
No incluye el
rechazo o
aceptación de la
hipótesis ni
Propone mejoras.
5.- Actitud Participa
propositiva
e integralmente en
toda la práctica.
Participa
ocasionalmente o
lo hace
constantemente
pero sin
Es un observador
Pasivo.
No participa en la
realización de la
práctica.