SlideShare una empresa de Scribd logo
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.
Chap 15fpin
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.
Chap 15fpin
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

PPTX
Chap 15bpin
PPTX
Chap 15epin
PPTX
Chap 15apin
PPTX
Chap 15dpin
PPTX
Chap 15gpin
PPTX
Chap 15cpin
PPTX
2o departamental Programacion 3
Chap 15bpin
Chap 15epin
Chap 15apin
Chap 15dpin
Chap 15gpin
Chap 15cpin
2o departamental Programacion 3

La actualidad más candente (18)

PDF
Tema 12 hilos en java por gio
PPT
Threads en Java
PPTX
Hilos – threads en java
PPT
Programando en java
DOCX
Multitarea e hilos en java con ejemplos
PDF
Java Threads (Hilos en Java)
PDF
Clase9 threads
PPT
Programación III (Java) - 08 threads
PDF
Programacion concurrente
PDF
Uso de Excepciones en JAVA
DOC
Guia1 programacion de-procesos_concurrentes-hilos
PPTX
Uso de hilos
PDF
Thread group demonios- parte1
PPTX
Programación multitarea
PPTX
Multitarea e hilos en java
PDF
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
ODP
PCJ Sesión 9: Threads
PDF
SCJP, Clase 9: Threads
Tema 12 hilos en java por gio
Threads en Java
Hilos – threads en java
Programando en java
Multitarea e hilos en java con ejemplos
Java Threads (Hilos en Java)
Clase9 threads
Programación III (Java) - 08 threads
Programacion concurrente
Uso de Excepciones en JAVA
Guia1 programacion de-procesos_concurrentes-hilos
Uso de hilos
Thread group demonios- parte1
Programación multitarea
Multitarea e hilos en java
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
PCJ Sesión 9: Threads
SCJP, Clase 9: Threads
Publicidad

Similar a Chap 15fpin (20)

PDF
Programación multihebra en java
PDF
Hilos
PDF
DOCX
Programación concurrente
PPT
Hilos
PPT
Threads en java
PDF
Hilos java
PPTX
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
PDF
DIAPOSITIVAS UNIDAD3.pdf
PPTX
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
PDF
Lps 17 hilos
PDF
Aplicaciones en java_genesis_duran (3)
PPT
Clase 3 ene 8
PPTX
hilosJava.pptx
PDF
Threads.pdf
PPTX
programacion concurrente java.pptx
PDF
PPTX
Unidad 4 tópicos avanzados de programación
PPT
Leccion 11 Java
Programación multihebra en java
Hilos
Programación concurrente
Hilos
Threads en java
Hilos java
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
DIAPOSITIVAS UNIDAD3.pdf
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Lps 17 hilos
Aplicaciones en java_genesis_duran (3)
Clase 3 ene 8
hilosJava.pptx
Threads.pdf
programacion concurrente java.pptx
Unidad 4 tópicos avanzados de programación
Leccion 11 Java
Publicidad

Último (20)

PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
Metodologías Activas con herramientas IAG
PPTX
Doctrina 1 Soteriologuia y sus diferente
DOCX
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
Atencion prenatal. Ginecologia y obsetricia
PDF
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
PDF
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
Punto Critico - Brian Tracy Ccesa007.pdf
Metodologías Activas con herramientas IAG
Doctrina 1 Soteriologuia y sus diferente
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
Escuelas Desarmando una mirada subjetiva a la educación
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Atencion prenatal. Ginecologia y obsetricia
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
Híper Mega Repaso Histológico Bloque 3.pdf
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf

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.
  • 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.
  • 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