SlideShare una empresa de Scribd logo
1 de 51
Multithreading
Objetivos
 Entender el concepto de multithreading y
aplicarlo para desarrollar animaciones
 Codificar hilos extendiendo la clase Thread
 Codificar hilos implementando la interface
Runnable
 Comprender el ciclo de vida de los estados
de un hilo y configurar sus propiedades
Multithreading
Objetivos
 Usar la sincronización de hilos para evitar
conflicto con los recursos
 Usar la clase Timer para simplificar el control
de la animación en Java.
Thread Concepts
Un hilo es un flujo de ejecución desde el
inicio hasta el fin de una tarea en un
programa.
Thread Concepts
Con Java, se puede lanzar múltiples hilos
concurrentemente desde un programa.
Estos hilos pueden ejecutarse
simultaneamente en un sistema con
multiples procesadores.
Thread Concepts
En un sistema con un procesador simple
los múltiples hilos comparten tiempo de
CPU y el sistema operativo es
responsable de planificar y reservar los
recusos de este.
Esta organización es práctica debido a
que la mayoría del tiempo el CPU esta de
holgazán. Este no hace nada mientras
espera que el usuario ingrese datos.
Thread Concepts
Los multihilos pueden hacer que su
programa responda mejor, sea interactivo,
así como tener mejor rendimiento.
Un buen procesador de palabras le debe
permitir imprimir o guardar un archivo
mientras UD. Escribe.
Thread Concepts
En muchos casos los programas con
múltiples hilos corren más rápido que un
programa con un simple hilo aún en los
sistemas con un sólo procesador.
Java provee un buen soporte excepcional
para la creación y ejecución de los hilos y
para ponerle cerrojos a los recursos para
prevenir conflictos
Thread Concepts
Cuando un programa se ejecuta como
una aplicación el intérprete de Java inicia
un hilo para el método main().
Cuando un programa se ejecuta como un
applet el navegador Web inicia un hilo
para correr el applet.
Thread Concepts
Ud. Puede crear hilos adicionales para
correr tareas concurrentes en un
programa.
Thread Concepts
Cada nuevo hilo es un objeto de la clase
que implementa la interface Runnable o
extiende a la clase que implementa a la
interface Runnable.
Este nuevo objeto es referido como un
objeto runnable.
Thread Concepts
Ud. puede crear un hilo extendiendo la
clase Thread o implementando la interface
Runnable.
Ambos, Thread y Runnable están
definidos en el paquete java.lang
La clase Thread implementa a la interface
runnable
Creating Threads by the Thread
class
La clase Thread contiene los
constructores para crear los hilos así
como muchos métodos útiles para el
control de los hilos.
Creating Threads by the Thread
class
Para crear y correr un hilo, primero defina
una clase que extienda a la clase Thread
Su clase debe sobre escribir al método
run().
Creating Threads by the Thread
class
El método run() le dice a su sistema como
el hilo será ejecutado cuando este corra.
Ud. Puede entonces crear un objeto que
corra en el hilo.
//Custom thread class
public class CustomThread extends Thread
{
. . .
public CustomThread(…) { … }
//Override the run() method in Thread
public void run() {
//Tell system how to run custom thread
. . .
}
. . .
}
//Client class
public class Client
{
. . .
public someMethod (…) { …
//Create a Thread
CustomThread thread = new CustomThread(…);
// start() a Thread
thread.start();
. . .}
. . .
}
Using the Thread Class to
create and launch Threads
Problema: Escriba un programa para crear
y correr tres hilos
 El primer hilo imprime la letra “a” cien veces
 El segundo hilo imprime la letra “b” cien veces
 El tercer hilo imprime los enteros desde 1
hasta 100
Using the Thread Class to
create and launch Threads
Solución: El programa crea tres hilos
independientes. Para correrlos
correctamente este necesita crear un
objeto runnable para cada hilo.
Debido a que los dos primeros hilos tienen
funcionalidad similar ellos pueden ser
definidos en una sola clase PrintChar que
extienda de Thread.
Using the Thread Class to
create and launch Threads
Solución: TestThread.java , PrintChar.java
y PrintNum.java
Creating Threads by
Implementing the Runnable
Interface
Un hilo se puede crear con una clase que
extienda a la clase Thread.
Creating Threads by
Implementing the Runnable
Interface
Este camino funciona bien si la clase
thread del usuario sólo hereda de la clase
Thread; pero no hereda de múltiples
clases como es el caso de un applet.
Creating Threads by
Implementing the Runnable
Interface
Para heredar de múltiples clases, se tiene
que implementar una interface
Java provee la interface Runnable como
alternativa de la clase Thread.
Creating Threads by
Implementing the Runnable
Interface
La interface Runnable contiene el método
run()
Se necesita implementar este método
para decirle al sistema como su hilo corre.
//Custom thread class
public class CustomThread implements Runnable
{
. . .
public CustomThread(…) { … }
//Override the run() method in Thread
public void run() {
//Tell system how to run custom thread
. . .
}
. . .
}
//Client class
public class Client
{ . . .
public someMethod (…) { …
//Create a Thread
CustomThread customThread = new CustomThread(…);
// Create a Thread
Thread thread = new Thread(customThread);
// start() a Thread
thread.start();
. . .}
. . .
}
Creating Threads by
Implementing the Runnable
Interface
Para iniciar un nuevo hilo con la interface
Runnable, se debe primero crear una
instancia de la clase que implementa la
interface Runnable, luego se usa el
constructor de la clase Thread para
construir el hilo.
Creating Threads by
Implementing the Runnable
Interface
Ver TestRunnable.java
Thread Controls and
communications
La clase Thread contiene los siguientes
métodos para controlar los hilos:
Thread Controls and
communications
 public void run() Este método es invocado
por el sistema java-runtime para ejecutar el
hilo. Se debe sobre escribir este método y
proveer el código que desea que el hilo
ejecute en su clase thread. Este método
nunca es invocado directamente por un
objeto runnable en un programa; sin embargo
este es un método de instancia del objeto
runnable.
Thread Controls and
communications
 public void start() Inicia el hilo causando que
el método run() pueda ser invocado. Este
método es llamado por un objeto runnable en
la clase cliente.
Thread Controls and
communications
 public void stop() Detiene el hilo. Apartir de
Java 2 este método es deprecated (obsoleto)
debido a que es conocido que por herencia
es inseguro. Se debe asignar null a una
variable de tipo Thread para indicar que este
hilo es detenido en lugar de utilizar el método
stop().
Thread Controls and
communications
 public void suspend() Suspende el hilo. A
partir de Java 2 este método es deprecated
(obsoleto) es conocido que es deadlock-
prone ( propenso a estancamiento). Se debe
escribir un código para usar el método wait()
con una variable booleana para indicar
cuando un hilo esta suspendido en lugar de
usar el método obsoleto suspend().
Thread Controls and
communications
 public void resume() Reanuda el hilo. Apartir
de Java 2 este método junto con suspend()
es deprecated debido a que es propenso a
estancamiento (deadlock). Se debe escribir el
código para usar el método notify() con una
variable booleana para indicar cuando un hilo
reanuda en lugar de usar el método obsoleto
deprecated resume().
Thread Controls and
communications
 public static void sleep(long millis) throws
InterruptedException Pone el objeto runnable
a dormir por un tiempo especificado en
milisegundos. Observe que este método es
static.
Thread Controls and
communications
 public static void yield(long millis) Causa que
el hilo que actualmente esta corriendo haga
una pausa temporal y permite que otros hilos
se ejecuten.
Thread Controls and
communications
 public void interrupt() Interrumpe la ejecución
del hilo.
 public static boolean isInterrupted() Verifica
cuando un hilo ha sido interrumpido.
Thread Controls and
communications
 public boolean isAlive() Verifica si el hilo esta
corriendo actualmente.
 public void setPriority(int p) Asigna la
prioridad p ( en un rango de 1 hasta 10) para
un hilo.
Thread Controls and
communications
Los métodos wait(), notify() y notifyAll()
son métodos de la clase Object.
Estos son frecuentemente usados con los
hilos para facilitar la comunicación entre
estos.
Thread Controls and
communications
 public final void wait() throws
InterruptedException Fuerza al hilo a esperar
hasta que el método notify() o notifyAll() sea
invocado por el objeto para el cual wait() fue
llamado.
Thread Controls and
communications
 public final void notify() Despierta uno de los
hilos que están esperando en este objeto.
Cual va a ser notificado depende de la
implementación del sistema.
 public final void notifyAll() despierta todos los
hilos que están esperando por este objeto.
The Lifecycle of a Thread
new Thread
(born)
CPU
Blocked
blocked until
lock is
available
blocked
until
notified
runs to
completion
(dead)
Runnable
priority queues
start()
Thread
scheduler
synchronized
wait()
notify()
sleep(), join()
The java.lang.Thread Class
sleep()
yield()
getCurrentThread()
setPriority() and getPriority()
setName() and getName()
Thread Group
Un grupo thread es un conjunto de hilos.
Algunos programas contienen algunos
hilos con funcionalidad similar.
Por conveniencia estos se pueden
agrupar y realizar operaciones en todo el
grupo.
Thread Group
Por ejemplo se pueden suspender y
reanudar todos los hilos que pertenecen a
un grupo al mismo tiempo.
Guía para usarThread Group
1
Use el constructor ThreadGroup para
crear un grupo thread
ThreadGroup g = new ThreadGroup(“thread
group”);
Esto crea un grupo thread g con el nombre
“thread group”
El nombre es una cadena y debe ser único.
Guía para usarThread Group
2
Usando el constructor Thread, coloque el
hilo en un grupo de hilos:
Thread t = new Thread(g,
newThreadClass(),”This thread”);
Guía para usarThread Group
3
Para saber cuantos hilos de un grupo
están actualmente corriendo se usa el
método activeCount():
System.out.println(“The number of runnable
thread in the group “ + g.activeCount());
Guía para usarThread Group
4
Cada hilo pertenece a un grupo.
Por defecto un nuevo hilo creado es
miembro del grupo de hilo que lo creó.
Guía para usarThread Group
4
Para encontrar a que grupo de hilos
pertenece un hilo se usa el método
getThreadGroup()
Cada hilo se tiene que iniciar ya que no
existe un método start() en ThreadGroup

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
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrenteAnel Sosa
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVAinnovalabcun
 
Guia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosGuia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosharoldhicc
 
Thread group demonios- parte1
Thread group demonios- parte1Thread group demonios- parte1
Thread group demonios- parte1Abrahan Reyes
 
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
 
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
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threadsflekoso
 

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
 
Threads en Java
Threads en JavaThreads en Java
Threads en Java
 
Hilos – threads en java
Hilos – threads   en javaHilos – threads   en java
Hilos – threads en java
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
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
 
Java Threads (Hilos en Java)
Java Threads (Hilos en Java)Java Threads (Hilos en Java)
Java Threads (Hilos en Java)
 
Clase9 threads
Clase9 threadsClase9 threads
Clase9 threads
 
Programación III (Java) - 08 threads
Programación III (Java) - 08 threadsProgramación III (Java) - 08 threads
Programación III (Java) - 08 threads
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones 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 hilos
Uso de hilosUso de hilos
Uso de hilos
 
Thread group demonios- parte1
Thread group demonios- parte1Thread group demonios- parte1
Thread group demonios- parte1
 
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
 
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
 
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
 

Similar a Chap 15fpin (20)

Multitarea
MultitareaMultitarea
Multitarea
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
 
Hilos
HilosHilos
Hilos
 
Thread 01
Thread 01Thread 01
Thread 01
 
Programación concurrente
Programación concurrenteProgramación concurrente
Programación concurrente
 
Threads en java
Threads en javaThreads en java
Threads en java
 
Hilos
HilosHilos
Hilos
 
Hilos java
Hilos javaHilos java
Hilos 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
 
DIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdfDIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdf
 
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
 
Lps 17 hilos
Lps 17 hilosLps 17 hilos
Lps 17 hilos
 
Aplicaciones en java_genesis_duran (3)
Aplicaciones en java_genesis_duran (3)Aplicaciones en java_genesis_duran (3)
Aplicaciones en java_genesis_duran (3)
 
Clase 3 ene 8
Clase 3 ene 8Clase 3 ene 8
Clase 3 ene 8
 
Thread
ThreadThread
Thread
 
hilosJava.pptx
hilosJava.pptxhilosJava.pptx
hilosJava.pptx
 
Threads.pdf
Threads.pdfThreads.pdf
Threads.pdf
 
programacion concurrente java.pptx
programacion concurrente java.pptxprogramacion concurrente java.pptx
programacion concurrente java.pptx
 
Thread 02
Thread 02Thread 02
Thread 02
 
Unidad 4 tópicos avanzados de programación
Unidad 4 tópicos avanzados de programación Unidad 4 tópicos avanzados de programación
Unidad 4 tópicos avanzados de programación
 

Último

Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...JAVIER SOLIS NOYOLA
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIAFabiolaGarcia751855
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdfDemetrio Ccesa Rayme
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!CatalinaAlfaroChryso
 
Educacion Basada en Evidencias SM5 Ccesa007.pdf
Educacion Basada en Evidencias  SM5  Ccesa007.pdfEducacion Basada en Evidencias  SM5  Ccesa007.pdf
Educacion Basada en Evidencias SM5 Ccesa007.pdfDemetrio Ccesa Rayme
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxroberthirigoinvasque
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
Ensayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 PreuniversitarioEnsayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 Preuniversitariolucianosaldivia3
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primariaWilian24
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuelabeltranponce75
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalJonathanCovena1
 

Último (20)

Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
Educacion Basada en Evidencias SM5 Ccesa007.pdf
Educacion Basada en Evidencias  SM5  Ccesa007.pdfEducacion Basada en Evidencias  SM5  Ccesa007.pdf
Educacion Basada en Evidencias SM5 Ccesa007.pdf
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Ensayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 PreuniversitarioEnsayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 Preuniversitario
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuela
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 

Chap 15fpin

  • 1. Multithreading Objetivos  Entender el concepto de multithreading y aplicarlo para desarrollar animaciones  Codificar hilos extendiendo la clase Thread  Codificar hilos implementando la interface Runnable  Comprender el ciclo de vida de los estados de un hilo y configurar sus propiedades
  • 2. Multithreading Objetivos  Usar la sincronización de hilos para evitar conflicto con los recursos  Usar la clase Timer para simplificar el control de la animación en Java.
  • 3. Thread Concepts Un hilo es un flujo de ejecución desde el inicio hasta el fin de una tarea en un programa.
  • 4. Thread Concepts Con Java, se puede lanzar múltiples hilos concurrentemente desde un programa. Estos hilos pueden ejecutarse simultaneamente en un sistema con multiples procesadores.
  • 5.
  • 6. Thread Concepts En un sistema con un procesador simple los múltiples hilos comparten tiempo de CPU y el sistema operativo es responsable de planificar y reservar los recusos de este. Esta organización es práctica debido a que la mayoría del tiempo el CPU esta de holgazán. Este no hace nada mientras espera que el usuario ingrese datos.
  • 7.
  • 8. Thread Concepts Los multihilos pueden hacer que su programa responda mejor, sea interactivo, así como tener mejor rendimiento. Un buen procesador de palabras le debe permitir imprimir o guardar un archivo mientras UD. Escribe.
  • 9. Thread Concepts En muchos casos los programas con múltiples hilos corren más rápido que un programa con un simple hilo aún en los sistemas con un sólo procesador. Java provee un buen soporte excepcional para la creación y ejecución de los hilos y para ponerle cerrojos a los recursos para prevenir conflictos
  • 10. Thread Concepts Cuando un programa se ejecuta como una aplicación el intérprete de Java inicia un hilo para el método main(). Cuando un programa se ejecuta como un applet el navegador Web inicia un hilo para correr el applet.
  • 11. Thread Concepts Ud. Puede crear hilos adicionales para correr tareas concurrentes en un programa.
  • 12. Thread Concepts Cada nuevo hilo es un objeto de la clase que implementa la interface Runnable o extiende a la clase que implementa a la interface Runnable. Este nuevo objeto es referido como un objeto runnable.
  • 13. Thread Concepts Ud. puede crear un hilo extendiendo la clase Thread o implementando la interface Runnable. Ambos, Thread y Runnable están definidos en el paquete java.lang La clase Thread implementa a la interface runnable
  • 14. Creating Threads by the Thread class La clase Thread contiene los constructores para crear los hilos así como muchos métodos útiles para el control de los hilos.
  • 15. Creating Threads by the Thread class Para crear y correr un hilo, primero defina una clase que extienda a la clase Thread Su clase debe sobre escribir al método run().
  • 16. Creating Threads by the Thread class El método run() le dice a su sistema como el hilo será ejecutado cuando este corra. Ud. Puede entonces crear un objeto que corra en el hilo.
  • 17. //Custom thread class public class CustomThread extends Thread { . . . public CustomThread(…) { … } //Override the run() method in Thread public void run() { //Tell system how to run custom thread . . . } . . . }
  • 18. //Client class public class Client { . . . public someMethod (…) { … //Create a Thread CustomThread thread = new CustomThread(…); // start() a Thread thread.start(); . . .} . . . }
  • 19. Using the Thread Class to create and launch Threads Problema: Escriba un programa para crear y correr tres hilos  El primer hilo imprime la letra “a” cien veces  El segundo hilo imprime la letra “b” cien veces  El tercer hilo imprime los enteros desde 1 hasta 100
  • 20. Using the Thread Class to create and launch Threads Solución: El programa crea tres hilos independientes. Para correrlos correctamente este necesita crear un objeto runnable para cada hilo. Debido a que los dos primeros hilos tienen funcionalidad similar ellos pueden ser definidos en una sola clase PrintChar que extienda de Thread.
  • 21. Using the Thread Class to create and launch Threads Solución: TestThread.java , PrintChar.java y PrintNum.java
  • 22. Creating Threads by Implementing the Runnable Interface Un hilo se puede crear con una clase que extienda a la clase Thread.
  • 23. Creating Threads by Implementing the Runnable Interface Este camino funciona bien si la clase thread del usuario sólo hereda de la clase Thread; pero no hereda de múltiples clases como es el caso de un applet.
  • 24. Creating Threads by Implementing the Runnable Interface Para heredar de múltiples clases, se tiene que implementar una interface Java provee la interface Runnable como alternativa de la clase Thread.
  • 25. Creating Threads by Implementing the Runnable Interface La interface Runnable contiene el método run() Se necesita implementar este método para decirle al sistema como su hilo corre.
  • 26. //Custom thread class public class CustomThread implements Runnable { . . . public CustomThread(…) { … } //Override the run() method in Thread public void run() { //Tell system how to run custom thread . . . } . . . }
  • 27. //Client class public class Client { . . . public someMethod (…) { … //Create a Thread CustomThread customThread = new CustomThread(…); // Create a Thread Thread thread = new Thread(customThread); // start() a Thread thread.start(); . . .} . . . }
  • 28. Creating Threads by Implementing the Runnable Interface Para iniciar un nuevo hilo con la interface Runnable, se debe primero crear una instancia de la clase que implementa la interface Runnable, luego se usa el constructor de la clase Thread para construir el hilo.
  • 29. Creating Threads by Implementing the Runnable Interface Ver TestRunnable.java
  • 30. Thread Controls and communications La clase Thread contiene los siguientes métodos para controlar los hilos:
  • 31. Thread Controls and communications  public void run() Este método es invocado por el sistema java-runtime para ejecutar el hilo. Se debe sobre escribir este método y proveer el código que desea que el hilo ejecute en su clase thread. Este método nunca es invocado directamente por un objeto runnable en un programa; sin embargo este es un método de instancia del objeto runnable.
  • 32. Thread Controls and communications  public void start() Inicia el hilo causando que el método run() pueda ser invocado. Este método es llamado por un objeto runnable en la clase cliente.
  • 33. Thread Controls and communications  public void stop() Detiene el hilo. Apartir de Java 2 este método es deprecated (obsoleto) debido a que es conocido que por herencia es inseguro. Se debe asignar null a una variable de tipo Thread para indicar que este hilo es detenido en lugar de utilizar el método stop().
  • 34. Thread Controls and communications  public void suspend() Suspende el hilo. A partir de Java 2 este método es deprecated (obsoleto) es conocido que es deadlock- prone ( propenso a estancamiento). Se debe escribir un código para usar el método wait() con una variable booleana para indicar cuando un hilo esta suspendido en lugar de usar el método obsoleto suspend().
  • 35. Thread Controls and communications  public void resume() Reanuda el hilo. Apartir de Java 2 este método junto con suspend() es deprecated debido a que es propenso a estancamiento (deadlock). Se debe escribir el código para usar el método notify() con una variable booleana para indicar cuando un hilo reanuda en lugar de usar el método obsoleto deprecated resume().
  • 36. Thread Controls and communications  public static void sleep(long millis) throws InterruptedException Pone el objeto runnable a dormir por un tiempo especificado en milisegundos. Observe que este método es static.
  • 37. Thread Controls and communications  public static void yield(long millis) Causa que el hilo que actualmente esta corriendo haga una pausa temporal y permite que otros hilos se ejecuten.
  • 38. Thread Controls and communications  public void interrupt() Interrumpe la ejecución del hilo.  public static boolean isInterrupted() Verifica cuando un hilo ha sido interrumpido.
  • 39. Thread Controls and communications  public boolean isAlive() Verifica si el hilo esta corriendo actualmente.  public void setPriority(int p) Asigna la prioridad p ( en un rango de 1 hasta 10) para un hilo.
  • 40. Thread Controls and communications Los métodos wait(), notify() y notifyAll() son métodos de la clase Object. Estos son frecuentemente usados con los hilos para facilitar la comunicación entre estos.
  • 41. Thread Controls and communications  public final void wait() throws InterruptedException Fuerza al hilo a esperar hasta que el método notify() o notifyAll() sea invocado por el objeto para el cual wait() fue llamado.
  • 42. Thread Controls and communications  public final void notify() Despierta uno de los hilos que están esperando en este objeto. Cual va a ser notificado depende de la implementación del sistema.  public final void notifyAll() despierta todos los hilos que están esperando por este objeto.
  • 43. The Lifecycle of a Thread new Thread (born) CPU Blocked blocked until lock is available blocked until notified runs to completion (dead) Runnable priority queues start() Thread scheduler synchronized wait() notify() sleep(), join()
  • 45. Thread Group Un grupo thread es un conjunto de hilos. Algunos programas contienen algunos hilos con funcionalidad similar. Por conveniencia estos se pueden agrupar y realizar operaciones en todo el grupo.
  • 46. Thread Group Por ejemplo se pueden suspender y reanudar todos los hilos que pertenecen a un grupo al mismo tiempo.
  • 47. Guía para usarThread Group 1 Use el constructor ThreadGroup para crear un grupo thread ThreadGroup g = new ThreadGroup(“thread group”); Esto crea un grupo thread g con el nombre “thread group” El nombre es una cadena y debe ser único.
  • 48. Guía para usarThread Group 2 Usando el constructor Thread, coloque el hilo en un grupo de hilos: Thread t = new Thread(g, newThreadClass(),”This thread”);
  • 49. Guía para usarThread Group 3 Para saber cuantos hilos de un grupo están actualmente corriendo se usa el método activeCount(): System.out.println(“The number of runnable thread in the group “ + g.activeCount());
  • 50. Guía para usarThread Group 4 Cada hilo pertenece a un grupo. Por defecto un nuevo hilo creado es miembro del grupo de hilo que lo creó.
  • 51. Guía para usarThread Group 4 Para encontrar a que grupo de hilos pertenece un hilo se usa el método getThreadGroup() Cada hilo se tiene que iniciar ya que no existe un método start() en ThreadGroup