SlideShare una empresa de Scribd logo
1 de 30
Extending the Thread Class
Se puede crear un hilo escribiendo una
clase que extienda a la clase
java.lang.Thread y sobre escriba al
método run() en Thread.
La clase GuessANumber extiende a
Thread y escoge un número aleatoria
mente entre 1 y 100 hasta que adivine el
entero almacenado en el campo number.
public class GuessANumber extends Thread
{
private int number;
public GuessANumber(int number)
{
this.number = number;
}
public void run()
{
int counter = 0;
int guess = 0;
do
{
guess = (int) (Math.random() * 100 + 1);
System.out.println(this.getName() + " guesses " + guess);
counter++;
}while(guess != number);
System.out.println("** Correct! " + this.getName() + " in " + counter +
"guesses.**");
}
}
Extending the Thread Class
Cuando UD. extiende la clase Thread,
UD. se ahorra un paso cuando crea e
inicia un hilo por que un objeto Runnable
y un objeto Thread son objetos iguales.
( La clase Thread implementa la interface
Runnable, así cualquier clase hija de
Thread es también de tipo Runnable.)
Extending the Thread Class
El siguiente programa ThreadDemo
instancia dos objetos GuessANumber,
luego los inicia a ambos.
Cada hilo corre hasta que se adivine el
número 20, el cual toma un número
arbitrario de guesses.
public class ThreadDemo
{
public static void main(String [] args)
{
System.out.println("Pick a number between 1 and 100...");
GuessANumber player1 = new GuessANumber(20);
GuessANumber player2 = new GuessANumber(20);
player1.start();
player2.start();
}
}
Yielding Threads
Un hilo se mantiene invocando el método
yield() de la clase Thread , este se ve así:
public static void yield()
Este método causa que el hilo que corre
actualmente se detenga para que los
otros hilos tengan oportunidad de
ejecutarse.
Yielding Threads
La siguiente clase GuessANumber2
modifica a la clase GuessANumber al
agregar a yield() dentro del método run():
public class GuessANumber2 extends Thread{
private int number;
public GuessANumber2(int number){
this.number = number;
}
public void run(){
int counter = 0;
int guess = 0;
do{
Thread.yield();
guess = (int) (Math.random() * 100 + 1);
System.out.println(this.getName() + " guesses " + guess);
counter++;
}while(guess != number);
System.out.println("** Correct! " + this.getName() + " in " + counter +
" guesses.**");
}
}
Yielding Threads
Estudie el siguiente programa
YieldDemo y trate de determinar que
sucede cuando los tres hilos se inician.
public class YieldDemo
{
public static void main(String [] args)
{
System.out.println("Pick a number between 1 and
100...");
Thread player1 = new GuessANumber2(85);
Thread player2 = new GuessANumber2(85);
Thread player3 = new GuessANumber2(85);
player3.setPriority(Thread.MAX_PRIORITY);
player1.start();
player2.start();
player3.start();
}
}
Yielding Threads
Note que en el programa YieldDemo el
player3 tiene la prioridad máxima de un
Thread, la cual es de 10. Después de
cada guess, cada hilo invoca al método
yield(). Sin embargo, el player3 tiene una
prioridad alta, este no se mantiene para
permitir que los hilos placer1 o player2
entren al CPU.
Yielding Threads
El hilo player3 atrapa el CPU hasta que
termina su ejecución. Cuando el hilo del
player3 termina, los hilos player1 y player2
cortésmente toman su turno para obtener
su guessing number cada uno llama al
método yield() después de cada guess.
Yielding Threads
Si UD. desea que el hilo del player3
tenga una prioridad más baja, para
utilizar el CPU, el player3 se puede poner
a dormir por poco tiempo.
Use el método sleep() de la clase Thread
para causar que el hilo que actualmente
esta corriendo duerma:
public static void sleep( int millisec )
throws InterruptedException
Yielding Threads
Veamos cual es el efecto que sleep()
tiene en la clase GuessANumber2, al
acambiar el llamado a Thread.yield() por
lo siguiente:
try
{
Thread.sleep(1);
}match(InterruptedException e) {}
Methods of the Thread Class
Veamos en detalles los métodos de la
clase Thread.
La clase Thread tiene muchos métodos
útiles para determinar y cambiar la
información acerca de un hilo, incluyendo:
Methods of the Thread Class
public void start(). Inicia un hilo en un
sendero de ejecución, luego invoca al método
run() en este objeto Thread.
public void run(). Si este objeto Thread fue
instanciado usando un destino Runnable por
separado, el método run() es invocado en este
objeto Runnable. Si UD. Escribe una clase que
extiende a Thread, el método sobre escrito
run() en la clase hija es invocado.
Methods of the Thread Class
public final void setName(String name).
Cambia el nombre del objeto Thread. También
existe el método getName() para obtener el
nombre.
public final void setDaemon( boolean on ).
Un parámetro true denota a este Thread como
un hilo demonio. Para el hilo que es un demonio,
este método debe ser invocado antes de que el
hilo inicie.
Methods of the Thread Class
public final void setPriority ( int priority ).
Asigna la prioridad de este objeto Thread. Los
posibles valores están entre 1 y 10. Sin
embargo los desarrolladores se animan a usar
los siguientes tres valores:
Thread.NORM_PRIORITY,
Thread.MIN_PRIORITY y
Thread.MAX_PRIORITY ( cuyos valores son 5,
1 y 10 respectivamente).
Methods of the Thread Class
public final void join(long millisec ). El hilo
actual invoca este método en un Segundo hilo,
causando que el hilo actual se bloquee hasta
que el Segundo hilo termine o espere el número
de milisegundos pasados.
public final boolean isAlive(). Retorna
true si el hilo esta vivo, lo cual es en cualquier
momento después de que es iniciado pero antes
de que este termine de correr
Methods of the Thread Class
Los métodos previos son invocados en un
objeto Thread particular.
Los siguientes métodos en la clase Thread son
static. Al invocar uno de los métodos static se
realizan operaciones en el hilo que corre
actualmente:
Methods of the Thread Class
public static void yield(). Causa que el actual
hilo que esta corriendo ceda ante cualquiera de
los otros hilos con la misma prioridad que
estén esperando para que se ponga en orden
de marcha.
public static void sleep( long millesec ).
Causa que el actual hilo se bloquee por lo
menos el número de milisegundos especificados.
Methods of the Thread Class
public static boolean holdsLock( Object x).
Retorna true si el hilo actual mantiene un
cerrojo en el Objeto dado. Los cerrojos serán
discutidos en la sección de la palabra clave
synchronized.
public static Thread currentThread().
Retorna una referencia del hilo que esta
corriendo actualmente, lo cual es útil cuando
corremos una aplicación de multihilos paso a
paso.
Methods of the Thread Class
public static void dumpStack(). Imprime la
pila de trazos del hilo que actualmente esta
corriendo, lo cual es útil para ejecutar paso a
paso una aplicación multihilos.
El siguiente programa ThreadClassDemo
demuestra el uso de algunos de los métodos de
la clase Thread . Esta utiliza las clases
DisplayMessage y GuessANumber.
public class ThreadClassDemo
{
public static void main(String [] args)
{
Runnable hello = new DisplayMessage("Hello");
Thread thread1 = new Thread(hello);
thread1.setDaemon(true);
thread1.setName("hello");
System.out.println("Starting hello thread...");
thread1.start();
Runnable bye = new DisplayMessage("Goodbye");
Thread thread2 = new Thread(bye);
thread2.setPriority(Thread.MIN_PRIORITY);
thread2.setDaemon(true);
System.out.println("Starting goodbye thread...");
thread2.start();
System.out.println("Starting thread3...");
Thread thread3 = new GuessANumber(27);
thread3.start();
try
{
thread3.join();
}catch(InterruptedException e)
{}
System.out.println("Starting thread4...");
Thread thread4 = new GuessANumber(75);
thread4.start();
System.out.println("main() is ending...");
}
}
Methods of the Thread Class
Hagamos algunos comentarios sobre el
programa ThreadClassDemo
 Existen un total de cinco hilos involucrados.
( No olvide el hilo que el main() esta
ejecutando.
 Los hilos thread1 y thread2 son hilos
demonios, así que ellos no mantienen el
proceso vivo, lo cual es relevante en este
ejemplo por que el thread1 y el thread2
contienen un bucle infinito.
Methods of the Thread Class
 Al thread2 se la ha asignado prioridad
mínima.
 El método main() invoca join() en el hilo
thread3, así ellos no mantienen el proceso
vivo, lo cual ocurre en un tiempo indefinido
debido a que el thread3 corre hasta que
adivina el numero 27.
Methods of the Thread Class
 Mientras el main() esta esperando por el
thread3, existen tres hilos runnable: thread1,
thread2, y thread3.
 Cuando el thread3 termina, el método main()
se convierte en runnable nuevamente e inicia
el thread4. El main() termina y su hilo muere,
dejando que thread1, thread2 y thread4
tengan el resto del tiempo de ejecución del
proceso.
Methods of the Thread Class
 El thread4 corre hasta que este adivina el
número 75, en este momento solo quedan
dos hilos demonios. Esto causa que el
proceso termine.

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
 
Programando en java
Programando en javaProgramando en java
Programando en javajulianbm60
 
Clase9 threads
Clase9 threadsClase9 threads
Clase9 threadsjorg_marq
 
Guia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosGuia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosharoldhicc
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVAinnovalabcun
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrenteAnel Sosa
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitareabowelmx
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threadsflekoso
 
Thread group demonios- parte1
Thread group demonios- parte1Thread group demonios- parte1
Thread group demonios- parte1Abrahan Reyes
 
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1Oscar V
 
Multitarea e hilos en java
Multitarea e hilos en javaMultitarea e hilos en java
Multitarea e hilos en javaTensor
 

La actualidad más candente (18)

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
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
Hilos – threads en java
Hilos – threads   en javaHilos – threads   en java
Hilos – threads en java
 
Threads en Java
Threads en JavaThreads en Java
Threads en Java
 
Clase9 threads
Clase9 threadsClase9 threads
Clase9 threads
 
Java Threads (Hilos en Java)
Java Threads (Hilos en Java)Java Threads (Hilos en Java)
Java Threads (Hilos en Java)
 
Guia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosGuia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilos
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
 
Uso de hilos
Uso de hilosUso de hilos
Uso de hilos
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitarea
 
PCJ Sesión 9: Threads
PCJ Sesión 9: ThreadsPCJ Sesión 9: Threads
PCJ Sesión 9: Threads
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threads
 
Thread group demonios- parte1
Thread group demonios- parte1Thread group demonios- parte1
Thread group demonios- parte1
 
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
 
Networking
NetworkingNetworking
Networking
 
Multitarea e hilos en java
Multitarea e hilos en javaMultitarea e hilos en java
Multitarea e hilos en java
 

Similar a Chap 15bpin (20)

Threads en java
Threads en javaThreads en java
Threads en java
 
Hilos
HilosHilos
Hilos
 
Threads.pdf
Threads.pdfThreads.pdf
Threads.pdf
 
DefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJavaDefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJava
 
Herencia encapsulación polimorfismo
Herencia encapsulación polimorfismoHerencia encapsulación polimorfismo
Herencia encapsulación polimorfismo
 
Constructores & excepciones
Constructores & excepcionesConstructores & excepciones
Constructores & excepciones
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
Threads
ThreadsThreads
Threads
 
Multitarea
MultitareaMultitarea
Multitarea
 
6 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 20096 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 2009
 
Metodo constructor de una clase JAVA
Metodo constructor de una clase JAVAMetodo constructor de una clase JAVA
Metodo constructor de una clase JAVA
 
Expo métodos
Expo métodosExpo métodos
Expo métodos
 
Entrega de reporte no 1, lab 1
Entrega de reporte no 1, lab 1Entrega de reporte no 1, lab 1
Entrega de reporte no 1, lab 1
 
Apache Storm: Desarrollo
Apache Storm: DesarrolloApache Storm: Desarrollo
Apache Storm: Desarrollo
 
Reporte unidad4
Reporte unidad4Reporte unidad4
Reporte unidad4
 
8.Clases y objetos Java
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos Java
 
Metodos 2
Metodos 2Metodos 2
Metodos 2
 
Hilos en Phytom.pptx
Hilos en Phytom.pptxHilos en Phytom.pptx
Hilos en Phytom.pptx
 
2 Introducción al lenguaje Ruby
2 Introducción al lenguaje Ruby2 Introducción al lenguaje Ruby
2 Introducción al lenguaje Ruby
 
Java
JavaJava
Java
 

Último

PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativafiorelachuctaya2
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Baker Publishing Company
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
CULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirCULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirPaddySydney1
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtweBROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwealekzHuri
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuelacocuyelquemao
 

Último (20)

PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativa
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
CULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirCULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartir
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtweBROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuela
 

Chap 15bpin

  • 1. Extending the Thread Class Se puede crear un hilo escribiendo una clase que extienda a la clase java.lang.Thread y sobre escriba al método run() en Thread. La clase GuessANumber extiende a Thread y escoge un número aleatoria mente entre 1 y 100 hasta que adivine el entero almacenado en el campo number.
  • 2. public class GuessANumber extends Thread { private int number; public GuessANumber(int number) { this.number = number; } public void run() { int counter = 0; int guess = 0; do { guess = (int) (Math.random() * 100 + 1); System.out.println(this.getName() + " guesses " + guess); counter++; }while(guess != number); System.out.println("** Correct! " + this.getName() + " in " + counter + "guesses.**"); } }
  • 3. Extending the Thread Class Cuando UD. extiende la clase Thread, UD. se ahorra un paso cuando crea e inicia un hilo por que un objeto Runnable y un objeto Thread son objetos iguales. ( La clase Thread implementa la interface Runnable, así cualquier clase hija de Thread es también de tipo Runnable.)
  • 4. Extending the Thread Class El siguiente programa ThreadDemo instancia dos objetos GuessANumber, luego los inicia a ambos. Cada hilo corre hasta que se adivine el número 20, el cual toma un número arbitrario de guesses.
  • 5. public class ThreadDemo { public static void main(String [] args) { System.out.println("Pick a number between 1 and 100..."); GuessANumber player1 = new GuessANumber(20); GuessANumber player2 = new GuessANumber(20); player1.start(); player2.start(); } }
  • 6. Yielding Threads Un hilo se mantiene invocando el método yield() de la clase Thread , este se ve así: public static void yield() Este método causa que el hilo que corre actualmente se detenga para que los otros hilos tengan oportunidad de ejecutarse.
  • 7. Yielding Threads La siguiente clase GuessANumber2 modifica a la clase GuessANumber al agregar a yield() dentro del método run():
  • 8. public class GuessANumber2 extends Thread{ private int number; public GuessANumber2(int number){ this.number = number; } public void run(){ int counter = 0; int guess = 0; do{ Thread.yield(); guess = (int) (Math.random() * 100 + 1); System.out.println(this.getName() + " guesses " + guess); counter++; }while(guess != number); System.out.println("** Correct! " + this.getName() + " in " + counter + " guesses.**"); } }
  • 9. Yielding Threads Estudie el siguiente programa YieldDemo y trate de determinar que sucede cuando los tres hilos se inician.
  • 10. public class YieldDemo { public static void main(String [] args) { System.out.println("Pick a number between 1 and 100..."); Thread player1 = new GuessANumber2(85); Thread player2 = new GuessANumber2(85); Thread player3 = new GuessANumber2(85); player3.setPriority(Thread.MAX_PRIORITY); player1.start(); player2.start(); player3.start(); } }
  • 11. Yielding Threads Note que en el programa YieldDemo el player3 tiene la prioridad máxima de un Thread, la cual es de 10. Después de cada guess, cada hilo invoca al método yield(). Sin embargo, el player3 tiene una prioridad alta, este no se mantiene para permitir que los hilos placer1 o player2 entren al CPU.
  • 12. Yielding Threads El hilo player3 atrapa el CPU hasta que termina su ejecución. Cuando el hilo del player3 termina, los hilos player1 y player2 cortésmente toman su turno para obtener su guessing number cada uno llama al método yield() después de cada guess.
  • 13. Yielding Threads Si UD. desea que el hilo del player3 tenga una prioridad más baja, para utilizar el CPU, el player3 se puede poner a dormir por poco tiempo. Use el método sleep() de la clase Thread para causar que el hilo que actualmente esta corriendo duerma: public static void sleep( int millisec ) throws InterruptedException
  • 14. Yielding Threads Veamos cual es el efecto que sleep() tiene en la clase GuessANumber2, al acambiar el llamado a Thread.yield() por lo siguiente: try { Thread.sleep(1); }match(InterruptedException e) {}
  • 15. Methods of the Thread Class Veamos en detalles los métodos de la clase Thread. La clase Thread tiene muchos métodos útiles para determinar y cambiar la información acerca de un hilo, incluyendo:
  • 16. Methods of the Thread Class public void start(). Inicia un hilo en un sendero de ejecución, luego invoca al método run() en este objeto Thread. public void run(). Si este objeto Thread fue instanciado usando un destino Runnable por separado, el método run() es invocado en este objeto Runnable. Si UD. Escribe una clase que extiende a Thread, el método sobre escrito run() en la clase hija es invocado.
  • 17. Methods of the Thread Class public final void setName(String name). Cambia el nombre del objeto Thread. También existe el método getName() para obtener el nombre. public final void setDaemon( boolean on ). Un parámetro true denota a este Thread como un hilo demonio. Para el hilo que es un demonio, este método debe ser invocado antes de que el hilo inicie.
  • 18. Methods of the Thread Class public final void setPriority ( int priority ). Asigna la prioridad de este objeto Thread. Los posibles valores están entre 1 y 10. Sin embargo los desarrolladores se animan a usar los siguientes tres valores: Thread.NORM_PRIORITY, Thread.MIN_PRIORITY y Thread.MAX_PRIORITY ( cuyos valores son 5, 1 y 10 respectivamente).
  • 19. Methods of the Thread Class public final void join(long millisec ). El hilo actual invoca este método en un Segundo hilo, causando que el hilo actual se bloquee hasta que el Segundo hilo termine o espere el número de milisegundos pasados. public final boolean isAlive(). Retorna true si el hilo esta vivo, lo cual es en cualquier momento después de que es iniciado pero antes de que este termine de correr
  • 20. Methods of the Thread Class Los métodos previos son invocados en un objeto Thread particular. Los siguientes métodos en la clase Thread son static. Al invocar uno de los métodos static se realizan operaciones en el hilo que corre actualmente:
  • 21. Methods of the Thread Class public static void yield(). Causa que el actual hilo que esta corriendo ceda ante cualquiera de los otros hilos con la misma prioridad que estén esperando para que se ponga en orden de marcha. public static void sleep( long millesec ). Causa que el actual hilo se bloquee por lo menos el número de milisegundos especificados.
  • 22. Methods of the Thread Class public static boolean holdsLock( Object x). Retorna true si el hilo actual mantiene un cerrojo en el Objeto dado. Los cerrojos serán discutidos en la sección de la palabra clave synchronized. public static Thread currentThread(). Retorna una referencia del hilo que esta corriendo actualmente, lo cual es útil cuando corremos una aplicación de multihilos paso a paso.
  • 23. Methods of the Thread Class public static void dumpStack(). Imprime la pila de trazos del hilo que actualmente esta corriendo, lo cual es útil para ejecutar paso a paso una aplicación multihilos. El siguiente programa ThreadClassDemo demuestra el uso de algunos de los métodos de la clase Thread . Esta utiliza las clases DisplayMessage y GuessANumber.
  • 24. public class ThreadClassDemo { public static void main(String [] args) { Runnable hello = new DisplayMessage("Hello"); Thread thread1 = new Thread(hello); thread1.setDaemon(true); thread1.setName("hello"); System.out.println("Starting hello thread..."); thread1.start();
  • 25. Runnable bye = new DisplayMessage("Goodbye"); Thread thread2 = new Thread(bye); thread2.setPriority(Thread.MIN_PRIORITY); thread2.setDaemon(true); System.out.println("Starting goodbye thread..."); thread2.start(); System.out.println("Starting thread3..."); Thread thread3 = new GuessANumber(27); thread3.start();
  • 26. try { thread3.join(); }catch(InterruptedException e) {} System.out.println("Starting thread4..."); Thread thread4 = new GuessANumber(75); thread4.start(); System.out.println("main() is ending..."); } }
  • 27. Methods of the Thread Class Hagamos algunos comentarios sobre el programa ThreadClassDemo  Existen un total de cinco hilos involucrados. ( No olvide el hilo que el main() esta ejecutando.  Los hilos thread1 y thread2 son hilos demonios, así que ellos no mantienen el proceso vivo, lo cual es relevante en este ejemplo por que el thread1 y el thread2 contienen un bucle infinito.
  • 28. Methods of the Thread Class  Al thread2 se la ha asignado prioridad mínima.  El método main() invoca join() en el hilo thread3, así ellos no mantienen el proceso vivo, lo cual ocurre en un tiempo indefinido debido a que el thread3 corre hasta que adivina el numero 27.
  • 29. Methods of the Thread Class  Mientras el main() esta esperando por el thread3, existen tres hilos runnable: thread1, thread2, y thread3.  Cuando el thread3 termina, el método main() se convierte en runnable nuevamente e inicia el thread4. El main() termina y su hilo muere, dejando que thread1, thread2 y thread4 tengan el resto del tiempo de ejecución del proceso.
  • 30. Methods of the Thread Class  El thread4 corre hasta que este adivina el número 75, en este momento solo quedan dos hilos demonios. Esto causa que el proceso termine.