SlideShare una empresa de Scribd logo
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

PPT
Threads en Java
PPT
Programación III (Java) - 08 threads
PDF
Tema 12 hilos en java por gio
PPT
Programando en java
PPTX
Hilos – threads en java
PPTX
2o departamental Programacion 3
PPTX
Uso de hilos
Threads en Java
Programación III (Java) - 08 threads
Tema 12 hilos en java por gio
Programando en java
Hilos – threads en java
2o departamental Programacion 3
Uso de hilos

La actualidad más candente (17)

PDF
Java Threads (Hilos en Java)
PPTX
Programación multitarea
DOCX
Multitarea e hilos en java con ejemplos
PDF
Programación multihebra en java
PPTX
Chap 15cpin
PPTX
Chap 15fpin
PPTX
Chap 15apin
PDF
GUIA 1 HILOS Y PROCESOS
PPTX
Chap 15gpin
PPTX
Multitarea e hilos en java
PPTX
Chap 15bpin
PDF
Uso de Excepciones en JAVA
PDF
Lps 17 hilos
PDF
Programacion concurrente
PPTX
Chap 15dpin
PPTX
Chap 15epin
Java Threads (Hilos en Java)
Programación multitarea
Multitarea e hilos en java con ejemplos
Programación multihebra en java
Chap 15cpin
Chap 15fpin
Chap 15apin
GUIA 1 HILOS Y PROCESOS
Chap 15gpin
Multitarea e hilos en java
Chap 15bpin
Uso de Excepciones en JAVA
Lps 17 hilos
Programacion concurrente
Chap 15dpin
Chap 15epin
Publicidad

Similar a Thread group demonios- parte1 (20)

DOCX
Programación concurrente
PDF
Hilos
PPT
Threads en java
PPT
Hilos
PDF
DIAPOSITIVAS UNIDAD3.pdf
PDF
03 java poo_parte_2
PPT
Leccion 11 Java
PDF
Revista java world cap 8,9,10
PDF
Hilos java
PPTX
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
PPTX
Programación 3: clases derivadas y polimorfismo
PPT
Historia java ruben rodriguez
PPT
Historia java ruben
PPTX
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
PDF
Semana 3 Herencia en Java
PDF
Unidad 4. Herencia y Polimorfismouskssss
DOC
Guia1 programacion de-procesos_concurrentes-hilos
PPTX
METODOS HEREDADOS EN LA PROGRAMACION .pptx
PDF
Threads.pdf
Programación concurrente
Hilos
Threads en java
Hilos
DIAPOSITIVAS UNIDAD3.pdf
03 java poo_parte_2
Leccion 11 Java
Revista java world cap 8,9,10
Hilos java
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Programación 3: clases derivadas y polimorfismo
Historia java ruben rodriguez
Historia java ruben
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Semana 3 Herencia en Java
Unidad 4. Herencia y Polimorfismouskssss
Guia1 programacion de-procesos_concurrentes-hilos
METODOS HEREDADOS EN LA PROGRAMACION .pptx
Threads.pdf
Publicidad

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.