SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Fundamentos Básicos sobre Programación Concurrente

PROGRAMACIÓN PARALELA Y
DISTRIBUIDA
                                          J. Jair Vázquez Palma .
AGRUPAMIENTO DE HILOS
   Todo hilo en java es miembro de un grupo de hilos.

   Los grupos de hilos proporcionan un mecanismo de
    reunión de múltiples hilos dentro de un único objeto y
    manipulación de dichos hilos en conjunto, en lugar de
    una forma individual.

   Por ejemplo, se pueden arrancar o suspender todos
    los hilos que están dentro de un grupo con una única
    llamada al método.
AGRUPAMIENTO DE HILOS
   Los grupos de hilos de java están implementados por la
    clase Threadgroup que se encuentra en el paquete
    Java.lang.

   El runtime system (sistema de tiempo de ejecución) de
    Java pone un hilo dentro de un grupo de hilos en el
    momento de la construcción del mismo.

   Cuando se crea un hilo, se puede dejar que el sistema de
    tiempo de ejecución ponga el nuevo hilo en algún grupo
    razonable por defecto, o se puede establecer
    explícitamente el grupo del nuevo hilo.
AGRUPAMIENTO DE HILOS

   El hilo es un miembro permanente de aquel que sea
    el grupo de hilos al cual se unió en el momento de su
    creación. No puede moverse un hilo a un nuevo grupo
    una vez que ha sido creado.
AGRUPAMIENTO DE HILOS POR DEFECTO
   Si se crea un nuevo hilo sin especificar su grupo en el
    constructor, el runtime system colocará el nuevo hilo
    automáticamente en el mismo grupo que el hilo que lo ha
    creado (conocido como grupo de hilos actual).

      ¿Cuál es el grupo de hilos del hilo principal de una
                           aplicación?

   Cuando se arranca una aplicación Java, el sistema de
    tiempo de ejecución de Java crea una instancia de la
    clase ThreadGroup llamada main. A menos que
    especifiques lo contrario, todos los nuevos hilos que crees
    se convertirán en miembros del grupo de hilos main.
CREACIÓN DE UN HILO EN UN GRUPO DE
FORMA EXPLICITA
   La clase Thread tiene tres constructores que te
    permiten establecer un nuevo grupo de hilos.

   public Thread( ThreadGroup group, Runnable runnable )
   public Thread( ThreadGroup group, String name )
   public Thread( ThreadGroup group, Runnable
    runnable,String name )
CREACIÓN DE UN HILO EN UN GRUPO DE
FORMA EXPLICITA
   Por ejemplo, la siguiente muestra de código crea un
    grupo de hilos (myThreadGroup) y entonces crea un
    hilo (myThread) en dicho grupo:

   ThreadGroup myThreadGroup = new ThreadGroup(
    “My Group of Threads” );
   Thread myThread = new Thread( myThreadGroup,
    “a thread for my group” );
LA CLASE “THREADGROUP”
         “THREADGROUP”
   La clase ThreadGroup es la implementación del
    concepto de grupo de hilos en Java.

   Ofrece funcionalidad necesaria para la manipulación
    de grupos de hilos para las aplicaciones Java.

   Un objeto ThreadGroup puede contener cualquier
    número de hilos.
LA CLASE “THREADGROUP”
         “THREADGROUP”
   Los hilos de un mismo grupo generalmente se
    relacionan de algún modo, ya sea por quién los creó,
    por la función que llevan a cabo, o por el momento en
    que deberían arrancarse y parar.

   El grupo de hilos de más alto nivel en una aplicación
    Java es el grupo de hilos denominado main.
LA CLASE “THREADGROUP” METODOS
         “THREADGROUP”
 La clase ThreadGroup tiene métodos que pueden ser
  clasificados como sigue:
• Collection Managment Methods (Métodos de
  administración del grupo): métodos que manipulan la
  colección de hilos y subgrupos contenidos en el grupo
  de hilos.
• Methods That Operate on the Group (Métodos que
  operan sobre el grupo): estos métodos establecen u
  obtienen atributos del objeto ThreadGroup.
LA CLASE “THREADGROUP” METODOS
         “THREADGROUP”
• Methods That Operate on All Threads within a Group
  (Métodos que operan sobre todos los hilos dentro del
  grupo): este es un conjunto de métodos que
  desarrollan algunas operaciones, como inicio y
  reinicio, sobre todos los hilos y subgrupos dentro del
  objeto ThreadGroup.
• Access Restriction Methods (Métodos de restricción
  de acceso): ThreadGroup y Thread permiten al
  administrador de seguridad restringir el acceso a los
  hilos en base a la relación de miembro/grupo con el
  grupo.
LA CLASE “THREADGROUP” MÉTODOS DE
         “THREADGROUP”
ADMINISTRACIÓN DEL GRUPO
   La clase ThreadGroup proporciona un conjunto de
    métodos que manipulan los hilos y los subgrupos que
    pertenecen al grupo:
   activeCount () proporciona el numero de hilos activos
    que actualmente hay en el grupo.
   activeGroupCount() proporciona el numero de
    subgrupos activos dentro del grupo de hilos.
   list() muestra la lista de hilos del grupo, incluyendo el
    nombre y la prioridad máxima de cada uno de ellos.
LA CLASE “THREADGROUP” MÉTODOS QUE
         “THREADGROUP”
OPERAN SOBRE EL GRUPO
   Los métodos operan a nivel de grupo; pero no hacen
    efecto sobre ninguno de los hilos pertenecientes al
    grupo. Lista de métodos que operan a nivel de grupo:

   getMaxPriority y setMaxPriority()
   getDaemon y SetDaemon()
   getName ()
   getParent() Devuelve el elemento principal del grupo
    de hilos.
   to String() Devuelve una representación de cadena de
    este grupo de hilos.
LA CLASE “THREADGROUP” MÉTODOS QUE
         “THREADGROUP”
OPERAN SOBRE EL GRUPO
   Los métodos operan a nivel de grupo; pero no hacen
    efecto sobre ninguno de los hilos pertenecientes al
    grupo. Lista de métodos que operan a nivel de grupo:

   getMaxPriority y setMaxPriority()
   getDaemon y SetDaemon()
   getName ()
   getParent() Devuelve el elemento principal del grupo
    de hilos.
   to String() Devuelve una representación de cadena de
    este grupo de hilos.
LA CLASE “THREADGROUP” MÉTODOS QUE
         “THREADGROUP”
OPERAN SOBRE TODOS LOS HILOS DENTRO DEL
GRUPO
   La clase ThreadGroup tiene tres métodos que te
    permiten modificar el estado actual de todos los hilos
    pertenecientes al grupo:

   resume(). Reanuda el hilo suspendido.
   stop(). Obliga al hilo para detener la ejecución.
   suspend(). Suspende a este hilo.
LA CLASE “THREADGROUP” MÉTODOS DE
         “THREADGROUP”
RESTRICCIÓN DE ACCESO
   checkAccess es un método de administración de
    seguridad actual; este método es invocado por las clases
    ThreadGrup y Thread.
   Métodos de la clase ThreadGrupo:
     setDameon(boolena isDaemon)
     setMaxPriority(int maxPriority)
     stop()
     suspend()
     resume()
     destroy() Destruye este grupo de hilos y todos
      sus subgrupos.
LA CLASE “THREADGROUP” MÉTODOS DE
         “THREADGROUP”
RESTRICCIÓN DE ACCESO
   Métodos de la clase Thread :

      stop()

      supend()

      resume()

      setPriority(int
                    priority)
      setName(String name)

      setDaemon(boolean isDaemon)
LA CLASE “THREADGROUP”
         “THREADGROUP”

   Referencias sobre clase Thread y ThreadGruop:
   http://msdn.microsoft.com/es-
    es/library/aa986237(v=vs.80).aspx
   http://docs.oracle.com/javase/1.4.2/docs/api/java/l
    ang/ThreadGroup.html
   http://docs.oracle.com/javase/tutorial/essential/con
    currency/index.html
LA CLASE “THREADGROUP”: GENERALIDADES
         “THREADGROUP”:
   Los grupos de Thread permiten actuar sobre todos los
    Thread de ese grupo como una unidad.

   Pudiendo con una sola llamada:

       Cambiarles el estado a todos.

       Cambiarles la prioridad a todos.

       Acceder a la colección de threads.

       Saber si un thread pertenece al grupo o no.
CONCURRENCIA Y SINCRONIZACION
   La programación concurrente puede dar lugar a
    muchos errores debido a la utilización de recursos
    compartidos que pueden ser alterados.

   Las secciones de código potencialmente peligrosas de
    provocar estos errores se conocen como secciones
    criticas.

   En estos programas por lo tanto hay que evitar que
    varios hilos entren en una sección critica (exclusión
    mutua) y que lo programas se bloqueen.
CONCURRENCIA Y SINCRONIZACION
   Un monitor impide que varios hilos accedan al mismo
    recurso compartido a la vez. En Java los monitores se
    consiguen mediante la palabra reservada synchronized.

              public synchronized( ) { ….}”

   Este método garantiza que solo un hilo de la clase pueda
    acceder al método a la vez, si un hilo intenta llamar a
    este método mientras otro hilo lo esta utilizando, el hilo
    que realice la llamada queda en un estado de bloqueado,
    esperando que el primer hilo sea liberado, esto es que
    salga del método Sincronizado (Synchronized).
CONCURRENCIA Y SINCRONIZACION
   Revisar programa “Productor - Consumidor”
HILOS DEMONIO
   Los demonios son usados generalmente para prestar
    servicios en segundo plano a todos los programas que
    puedan necesitar el tipo servicio proporcionado.

   Los demonios son también se llaman servicios,
    porque se ejecutan, normalmente, con prioridad baja
    y proporcionan un servicio básico a un programa o
    programas cuando la actividad de la máquina es
    reducida.
HILOS DEMONIO
   Los hilos demonio son útiles cuando un hilo debe
    ejecutarse en segundo plano durante largos períodos
    de tiempo.

   Por lo tanto, un proceso demonio es un proceso que
    debe ejecutarse continuamente en modo background
    (en segundo plano), y generalmente se diseña para
    responder a peticiones de otros.
HILOS DEMONIO
   Un ejemplo de hilo demonio que está ejecutándose
    continuamente es el recolector de basura (garbage
    collector).

   Este hilo, proporcionado por la Máquina Virtual Java,
    comprueba las variables de los programas a las que
    no se accede nunca y libera estos recursos,
    devolviéndolos al sistema.
HILOS DEMONIO: RECOLECTOR DE BASURA
El espacio de memoria se va llenando con diferentes "objetos"
(representados con colores), también pueden destruirse algunos de
ellos, dejando "huecos" en el espacio de memoria.
Cuando ya no queda espacio
disponible, o cuando lo decide
la rutina de recolección de
basura, la memoria es
"compactada",        colocando
todos los "objetos" que se
están usando al principio, y
consolidando      todos     los
"huecos" de memoria al final,
quedando así una gran área
de memoria disponible para la
futura creación de objetos.
HILOS DEMONIO
   Para crear un hilo demonio simplemente hay que crear un
    hilo normal y enviarle el mensaje setDaemon:

                     hilo.setDaemon(true);

   Si un hilo es un demonio, entonces cualquier hilo que el
    cree será automáticamente un demonio.

   Para saber si un hilo es demonio simplemente hay que
    enviarle un mensaje isDeamon. El método que se ejecuta
    devolverá un true si el hilo es un demonio y false en caso
    contrario:
                  boolean b = hilo.isDeamon();
HILOS DEMONIO: GENERALIDADES
   El interprete de Java normalmente permanece en
    ejecución hasta que los hilos en el sistema finalizan su
    ejecución.

   Los hilos demonio son una excepción, ya que su labor es
    proporcionar servicios a otros programas.

   Por lo tanto no tiene sentido continuar ejecutándolos
    cuando ya no haya programas en ejecución .

   Por esta razón, el interprete de Java finalizara cuando
    todos los hilos que queden en ejecución sean demonios.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (17)

Java Threads (Hilos en Java)
Java Threads (Hilos en Java)Java Threads (Hilos en Java)
Java Threads (Hilos en Java)
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitarea
 
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
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
 
Chap 15cpin
Chap 15cpinChap 15cpin
Chap 15cpin
 
Chap 15fpin
Chap 15fpinChap 15fpin
Chap 15fpin
 
Chap 15apin
Chap 15apinChap 15apin
Chap 15apin
 
GUIA 1 HILOS Y PROCESOS
GUIA 1 HILOS Y PROCESOSGUIA 1 HILOS Y PROCESOS
GUIA 1 HILOS Y PROCESOS
 
Chap 15gpin
Chap 15gpinChap 15gpin
Chap 15gpin
 
Multitarea e hilos en java
Multitarea e hilos en javaMultitarea e hilos en java
Multitarea e hilos en java
 
Chap 15bpin
Chap 15bpinChap 15bpin
Chap 15bpin
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
 
Networking
NetworkingNetworking
Networking
 
Lps 17 hilos
Lps 17 hilosLps 17 hilos
Lps 17 hilos
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
 
Chap 15dpin
Chap 15dpinChap 15dpin
Chap 15dpin
 
Chap 15epin
Chap 15epinChap 15epin
Chap 15epin
 

Similar a Thread group demonios- parte1

Programación concurrente
Programación concurrenteProgramación concurrente
Programación concurrentecarlos Salazar
 
Threads en java
Threads en javaThreads en java
Threads en javajent46
 
DIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdfDIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdfDaveParker23
 
Revista java world cap 8,9,10
Revista java world cap 8,9,10Revista java world cap 8,9,10
Revista java world cap 8,9,10Hack '
 
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 concurrenteJosé Antonio Sandoval Acosta
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
 
Historia java ruben rodriguez
Historia java ruben rodriguezHistoria java ruben rodriguez
Historia java ruben rodriguezcoruniversitec
 
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 concurrenteJosé Antonio Sandoval Acosta
 
Guia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosGuia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosharoldhicc
 
METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxjuan gonzalez
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Javamaeusogo
 

Similar a Thread group demonios- parte1 (20)

Multitarea
MultitareaMultitarea
Multitarea
 
Programación concurrente
Programación concurrenteProgramación concurrente
Programación concurrente
 
Hilos
HilosHilos
Hilos
 
Threads en java
Threads en javaThreads en java
Threads en java
 
Hilos
HilosHilos
Hilos
 
DIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdfDIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdf
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Leccion 11 Java
Leccion 11 JavaLeccion 11 Java
Leccion 11 Java
 
Revista java world cap 8,9,10
Revista java world cap 8,9,10Revista java world cap 8,9,10
Revista java world cap 8,9,10
 
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
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
Historia java ruben rodriguez
Historia java ruben rodriguezHistoria java ruben rodriguez
Historia java ruben rodriguez
 
Historia java ruben
Historia java rubenHistoria java ruben
Historia java ruben
 
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
 
Semana 3 Herencia en Java
Semana 3   Herencia en JavaSemana 3   Herencia en Java
Semana 3 Herencia 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
 
METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptx
 
Threads.pdf
Threads.pdfThreads.pdf
Threads.pdf
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 

Thread group demonios- parte1

  • 1. Fundamentos Básicos sobre Programación Concurrente PROGRAMACIÓN PARALELA Y DISTRIBUIDA J. Jair Vázquez Palma .
  • 2. AGRUPAMIENTO DE HILOS  Todo hilo en java es miembro de un grupo de hilos.  Los grupos de hilos proporcionan un mecanismo de reunión de múltiples hilos dentro de un único objeto y manipulación de dichos hilos en conjunto, en lugar de una forma individual.  Por ejemplo, se pueden arrancar o suspender todos los hilos que están dentro de un grupo con una única llamada al método.
  • 3. AGRUPAMIENTO DE HILOS  Los grupos de hilos de java están implementados por la clase Threadgroup que se encuentra en el paquete Java.lang.  El runtime system (sistema de tiempo de ejecución) de Java pone un hilo dentro de un grupo de hilos en el momento de la construcción del mismo.  Cuando se crea un hilo, se puede dejar que el sistema de tiempo de ejecución ponga el nuevo hilo en algún grupo razonable por defecto, o se puede establecer explícitamente el grupo del nuevo hilo.
  • 4. AGRUPAMIENTO DE HILOS  El hilo es un miembro permanente de aquel que sea el grupo de hilos al cual se unió en el momento de su creación. No puede moverse un hilo a un nuevo grupo una vez que ha sido creado.
  • 5. AGRUPAMIENTO DE HILOS POR DEFECTO  Si se crea un nuevo hilo sin especificar su grupo en el constructor, el runtime system colocará el nuevo hilo automáticamente en el mismo grupo que el hilo que lo ha creado (conocido como grupo de hilos actual). ¿Cuál es el grupo de hilos del hilo principal de una aplicación?  Cuando se arranca una aplicación Java, el sistema de tiempo de ejecución de Java crea una instancia de la clase ThreadGroup llamada main. A menos que especifiques lo contrario, todos los nuevos hilos que crees se convertirán en miembros del grupo de hilos main.
  • 6. CREACIÓN DE UN HILO EN UN GRUPO DE FORMA EXPLICITA  La clase Thread tiene tres constructores que te permiten establecer un nuevo grupo de hilos.  public Thread( ThreadGroup group, Runnable runnable )  public Thread( ThreadGroup group, String name )  public Thread( ThreadGroup group, Runnable runnable,String name )
  • 7. CREACIÓN DE UN HILO EN UN GRUPO DE FORMA EXPLICITA  Por ejemplo, la siguiente muestra de código crea un grupo de hilos (myThreadGroup) y entonces crea un hilo (myThread) en dicho grupo:  ThreadGroup myThreadGroup = new ThreadGroup( “My Group of Threads” );  Thread myThread = new Thread( myThreadGroup, “a thread for my group” );
  • 8. LA CLASE “THREADGROUP” “THREADGROUP”  La clase ThreadGroup es la implementación del concepto de grupo de hilos en Java.  Ofrece funcionalidad necesaria para la manipulación de grupos de hilos para las aplicaciones Java.  Un objeto ThreadGroup puede contener cualquier número de hilos.
  • 9. LA CLASE “THREADGROUP” “THREADGROUP”  Los hilos de un mismo grupo generalmente se relacionan de algún modo, ya sea por quién los creó, por la función que llevan a cabo, o por el momento en que deberían arrancarse y parar.  El grupo de hilos de más alto nivel en una aplicación Java es el grupo de hilos denominado main.
  • 10. LA CLASE “THREADGROUP” METODOS “THREADGROUP”  La clase ThreadGroup tiene métodos que pueden ser clasificados como sigue: • Collection Managment Methods (Métodos de administración del grupo): métodos que manipulan la colección de hilos y subgrupos contenidos en el grupo de hilos. • Methods That Operate on the Group (Métodos que operan sobre el grupo): estos métodos establecen u obtienen atributos del objeto ThreadGroup.
  • 11. LA CLASE “THREADGROUP” METODOS “THREADGROUP” • Methods That Operate on All Threads within a Group (Métodos que operan sobre todos los hilos dentro del grupo): este es un conjunto de métodos que desarrollan algunas operaciones, como inicio y reinicio, sobre todos los hilos y subgrupos dentro del objeto ThreadGroup. • Access Restriction Methods (Métodos de restricción de acceso): ThreadGroup y Thread permiten al administrador de seguridad restringir el acceso a los hilos en base a la relación de miembro/grupo con el grupo.
  • 12. LA CLASE “THREADGROUP” MÉTODOS DE “THREADGROUP” ADMINISTRACIÓN DEL GRUPO  La clase ThreadGroup proporciona un conjunto de métodos que manipulan los hilos y los subgrupos que pertenecen al grupo:  activeCount () proporciona el numero de hilos activos que actualmente hay en el grupo.  activeGroupCount() proporciona el numero de subgrupos activos dentro del grupo de hilos.  list() muestra la lista de hilos del grupo, incluyendo el nombre y la prioridad máxima de cada uno de ellos.
  • 13. LA CLASE “THREADGROUP” MÉTODOS QUE “THREADGROUP” OPERAN SOBRE EL GRUPO  Los métodos operan a nivel de grupo; pero no hacen efecto sobre ninguno de los hilos pertenecientes al grupo. Lista de métodos que operan a nivel de grupo:  getMaxPriority y setMaxPriority()  getDaemon y SetDaemon()  getName ()  getParent() Devuelve el elemento principal del grupo de hilos.  to String() Devuelve una representación de cadena de este grupo de hilos.
  • 14. LA CLASE “THREADGROUP” MÉTODOS QUE “THREADGROUP” OPERAN SOBRE EL GRUPO  Los métodos operan a nivel de grupo; pero no hacen efecto sobre ninguno de los hilos pertenecientes al grupo. Lista de métodos que operan a nivel de grupo:  getMaxPriority y setMaxPriority()  getDaemon y SetDaemon()  getName ()  getParent() Devuelve el elemento principal del grupo de hilos.  to String() Devuelve una representación de cadena de este grupo de hilos.
  • 15. LA CLASE “THREADGROUP” MÉTODOS QUE “THREADGROUP” OPERAN SOBRE TODOS LOS HILOS DENTRO DEL GRUPO  La clase ThreadGroup tiene tres métodos que te permiten modificar el estado actual de todos los hilos pertenecientes al grupo:  resume(). Reanuda el hilo suspendido.  stop(). Obliga al hilo para detener la ejecución.  suspend(). Suspende a este hilo.
  • 16. LA CLASE “THREADGROUP” MÉTODOS DE “THREADGROUP” RESTRICCIÓN DE ACCESO  checkAccess es un método de administración de seguridad actual; este método es invocado por las clases ThreadGrup y Thread.  Métodos de la clase ThreadGrupo:  setDameon(boolena isDaemon)  setMaxPriority(int maxPriority)  stop()  suspend()  resume()  destroy() Destruye este grupo de hilos y todos sus subgrupos.
  • 17. LA CLASE “THREADGROUP” MÉTODOS DE “THREADGROUP” RESTRICCIÓN DE ACCESO  Métodos de la clase Thread : stop() supend() resume() setPriority(int priority) setName(String name) setDaemon(boolean isDaemon)
  • 18. LA CLASE “THREADGROUP” “THREADGROUP”  Referencias sobre clase Thread y ThreadGruop:  http://msdn.microsoft.com/es- es/library/aa986237(v=vs.80).aspx  http://docs.oracle.com/javase/1.4.2/docs/api/java/l ang/ThreadGroup.html  http://docs.oracle.com/javase/tutorial/essential/con currency/index.html
  • 19. LA CLASE “THREADGROUP”: GENERALIDADES “THREADGROUP”:  Los grupos de Thread permiten actuar sobre todos los Thread de ese grupo como una unidad.  Pudiendo con una sola llamada: Cambiarles el estado a todos. Cambiarles la prioridad a todos. Acceder a la colección de threads. Saber si un thread pertenece al grupo o no.
  • 20. CONCURRENCIA Y SINCRONIZACION  La programación concurrente puede dar lugar a muchos errores debido a la utilización de recursos compartidos que pueden ser alterados.  Las secciones de código potencialmente peligrosas de provocar estos errores se conocen como secciones criticas.  En estos programas por lo tanto hay que evitar que varios hilos entren en una sección critica (exclusión mutua) y que lo programas se bloqueen.
  • 21. CONCURRENCIA Y SINCRONIZACION  Un monitor impide que varios hilos accedan al mismo recurso compartido a la vez. En Java los monitores se consiguen mediante la palabra reservada synchronized. public synchronized( ) { ….}”  Este método garantiza que solo un hilo de la clase pueda acceder al método a la vez, si un hilo intenta llamar a este método mientras otro hilo lo esta utilizando, el hilo que realice la llamada queda en un estado de bloqueado, esperando que el primer hilo sea liberado, esto es que salga del método Sincronizado (Synchronized).
  • 22. CONCURRENCIA Y SINCRONIZACION  Revisar programa “Productor - Consumidor”
  • 23. HILOS DEMONIO  Los demonios son usados generalmente para prestar servicios en segundo plano a todos los programas que puedan necesitar el tipo servicio proporcionado.  Los demonios son también se llaman servicios, porque se ejecutan, normalmente, con prioridad baja y proporcionan un servicio básico a un programa o programas cuando la actividad de la máquina es reducida.
  • 24. HILOS DEMONIO  Los hilos demonio son útiles cuando un hilo debe ejecutarse en segundo plano durante largos períodos de tiempo.  Por lo tanto, un proceso demonio es un proceso que debe ejecutarse continuamente en modo background (en segundo plano), y generalmente se diseña para responder a peticiones de otros.
  • 25. HILOS DEMONIO  Un ejemplo de hilo demonio que está ejecutándose continuamente es el recolector de basura (garbage collector).  Este hilo, proporcionado por la Máquina Virtual Java, comprueba las variables de los programas a las que no se accede nunca y libera estos recursos, devolviéndolos al sistema.
  • 26. HILOS DEMONIO: RECOLECTOR DE BASURA El espacio de memoria se va llenando con diferentes "objetos" (representados con colores), también pueden destruirse algunos de ellos, dejando "huecos" en el espacio de memoria. Cuando ya no queda espacio disponible, o cuando lo decide la rutina de recolección de basura, la memoria es "compactada", colocando todos los "objetos" que se están usando al principio, y consolidando todos los "huecos" de memoria al final, quedando así una gran área de memoria disponible para la futura creación de objetos.
  • 27. HILOS DEMONIO  Para crear un hilo demonio simplemente hay que crear un hilo normal y enviarle el mensaje setDaemon: hilo.setDaemon(true);  Si un hilo es un demonio, entonces cualquier hilo que el cree será automáticamente un demonio.  Para saber si un hilo es demonio simplemente hay que enviarle un mensaje isDeamon. El método que se ejecuta devolverá un true si el hilo es un demonio y false en caso contrario: boolean b = hilo.isDeamon();
  • 28. HILOS DEMONIO: GENERALIDADES  El interprete de Java normalmente permanece en ejecución hasta que los hilos en el sistema finalizan su ejecución.  Los hilos demonio son una excepción, ya que su labor es proporcionar servicios a otros programas.  Por lo tanto no tiene sentido continuar ejecutándolos cuando ya no haya programas en ejecución .  Por esta razón, el interprete de Java finalizara cuando todos los hilos que queden en ejecución sean demonios.