SlideShare una empresa de Scribd logo
1 de 10
GUÍA DE LABORATORIOS
PROGRAMACIÓN AVANZADA
“Educación de Calidad al Alcance de Todos”
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.
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
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();
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)
{
Pares p1=new Pares(g);
Impares p2=new Impares(g);
p1.start();
p2.start();
while(p1.isAlive() || p2.isAlive())
g.drawString("Procesos en ejecución", 100,100);
}
}
}
class Pares extends Thread
{ int f,c,par=0;
Graphics g1;
Pares(Graphics g)
{
f=20;
c=2;
g1=g;
}
public void run(){
while(par<=20)
{
g1.drawString(""+par, f, c+(c*10));
par +=2;
c++;
try{
Thread.sleep(3000);
}catch(InterruptedException e){}
}
}
}
class Impares extends Thread
{
int imp,f,c;
Graphics g1;
Impares(Graphics g)
{
imp=1;
f=40;
c=1;
g1=g;
}
public void run(){
while(imp<=20){
g1.drawString(""+imp,f,c+(c*15));
System.out.print(imp+" ");
imp +=2;
f+=10;
c++;
try{
Thread.sleep(3000);
}catch(InterruptedException e){}
}
}
}
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
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
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.

Más contenido relacionado

La actualidad más candente

Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gioRobert Wolf
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitareabowelmx
 
Multitarea e hilos en java
Multitarea e hilos en javaMultitarea e hilos en java
Multitarea e hilos en javaTensor
 
Jyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc X
 
Clase9 threads
Clase9 threadsClase9 threads
Clase9 threadsjorg_marq
 
Tema 7 polimorfismo en java
Tema 7 polimorfismo en javaTema 7 polimorfismo en java
Tema 7 polimorfismo en javaFaby Páez
 
Concurrencia y nuevas características en C++11
Concurrencia y nuevas características en C++11Concurrencia y nuevas características en C++11
Concurrencia y nuevas características en C++11Sebastián Vizcay
 
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantesUsando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantesMartín Volpe
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the futureParadigma Digital
 
Jyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc X
 
Multitaréa e hilos
Multitaréa e hilosMultitaréa e hilos
Multitaréa e hilosTensor
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 

La actualidad más candente (15)

Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitarea
 
Multitarea e hilos en java
Multitarea e hilos en javaMultitarea e hilos en java
Multitarea e hilos en java
 
Jyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc java-cap23 j unit
Jyoc java-cap23 j unit
 
Clase9 threads
Clase9 threadsClase9 threads
Clase9 threads
 
Tema 7 polimorfismo en java
Tema 7 polimorfismo en javaTema 7 polimorfismo en java
Tema 7 polimorfismo en java
 
Capitulo 8 9-10
Capitulo 8 9-10Capitulo 8 9-10
Capitulo 8 9-10
 
Concurrencia y nuevas características en C++11
Concurrencia y nuevas características en C++11Concurrencia y nuevas características en C++11
Concurrencia y nuevas características en C++11
 
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantesUsando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
 
Jyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datos
 
Multitaréa e hilos
Multitaréa e hilosMultitaréa e hilos
Multitaréa e hilos
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
9.herencia en java
9.herencia en java9.herencia en java
9.herencia en java
 
Comandos de Java
Comandos de JavaComandos de Java
Comandos de Java
 

Similar a Guia1 programacion de-procesos_concurrentes-hilos (20)

Threads en java
Threads en javaThreads en java
Threads en java
 
Hilos
HilosHilos
Hilos
 
Threads en Java
Threads en JavaThreads en Java
Threads en Java
 
Uso de hilos
Uso de hilosUso de hilos
Uso de hilos
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
Multitarea
MultitareaMultitarea
Multitarea
 
Thread
ThreadThread
Thread
 
Hilos
HilosHilos
Hilos
 
Java Threads (Hilos en Java)
Java Threads (Hilos en Java)Java Threads (Hilos en Java)
Java Threads (Hilos en Java)
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
 
Programación en java
Programación en javaProgramación en java
Programación en java
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threads
 
PCJ Sesión 9: Threads
PCJ Sesión 9: ThreadsPCJ Sesión 9: Threads
PCJ Sesión 9: Threads
 
Java
JavaJava
Java
 
Hilos java
Hilos javaHilos java
Hilos java
 
DIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdfDIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdf
 
Java
JavaJava
Java
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
 
Manuales ...
Manuales ...Manuales ...
Manuales ...
 

Guia1 programacion de-procesos_concurrentes-hilos

  • 1. GUÍA DE LABORATORIOS PROGRAMACIÓN AVANZADA “Educación de Calidad al Alcance de Todos”
  • 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)
  • 6. { Pares p1=new Pares(g); Impares p2=new Impares(g); p1.start(); p2.start(); while(p1.isAlive() || p2.isAlive()) g.drawString("Procesos en ejecución", 100,100); } } } class Pares extends Thread { int f,c,par=0; Graphics g1; Pares(Graphics g) { f=20; c=2; g1=g; } public void run(){ while(par<=20) { g1.drawString(""+par, f, c+(c*10)); par +=2; c++; try{ Thread.sleep(3000); }catch(InterruptedException e){} }
  • 7. } } class Impares extends Thread { int imp,f,c; Graphics g1; Impares(Graphics g) { imp=1; f=40; c=1; g1=g; } public void run(){ while(imp<=20){ g1.drawString(""+imp,f,c+(c*15)); System.out.print(imp+" "); imp +=2; f+=10; c++; try{ Thread.sleep(3000); }catch(InterruptedException e){} } } }
  • 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.