Presentacion Hilos Java

14
 1 de 14 UNIVERSIDAD DEL CAUCA Hilos en Java W. Libardo Pantoja Yépez Ing. Sistemas

Transcript of Presentacion Hilos Java

Page 1: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 1/141 de 14

UNIVERSIDAD DEL CAUCA

Hilos en Java

W. Libardo Pantoja YépezIng. Sistemas

Page 2: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 2/142 de 14

OBJETIVO

● Conocer la API de java para el manejo de hilos en java.

Hilos en java

Page 3: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 3/143 de 14

Agenda

●Definición de un hilo●Estado de un hilo●Prioridades de un hilo●La clase ThreadGroup●Los Programas multi-hilos● Sincronización de hilos

Hilos en Java

Page 4: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 4/144 de 14

Hilos/Thread/Procesos ligeros

- Def : Conjunto de instrucciones que se ejecutan secuencialmente y quesirve para llevar el control de un proceso. Un proceso es un programaen ejecución y tiene asignado unos recursos.

-- Un hilo no es un programa (no puede correr por si solo) pero corredentro de un programa.

- Un hilo (conocido a veces como un contexto de ejecución o un proceso ligero) es un simple flujo secuencial de control dentro de unproceso

Hilos en Java

Page 5: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 5/145 de 14

Hilos/Thread/Procesos ligeros

- Un programa en Java puede tener múltiples hilos.

- Se aprovechan las capacidades de Multitarea del Sistema Operativo.

- La conmutación entre hilos es más rápida que la conmutación entreprocesos.

- Java soporta hilos de modo nativo.

Hilos en Java

Page 6: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 6/146 de 14

Estado de un hilo

Hilos en java

Page 7: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 7/147 de 14

Threads en Java

1) Extender de la clase Thread y sobreescribir el método run()

2) Implementando la interface Runnable, la cual posee un único

método run(), que debemos sobreescribir.

Hilos en Java

Page 8: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 8/148 de 14

Prioridades de un Hilo

1)Vienen definidas por variables miembro de la clase Thread

2) Valor de 1 a 10. Por defecto es 5

3) setPriority(), getPriority().

Hilos en Java

Page 9: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 9/149 de 14

El Grupo de hilos● Cada hilo en java es miembro de un grupo de hilos.●Los grupos de hilos permiten manipular un conjunto de hilos en lugar demanipular los hilos de forma individual.●La definición de los grupos de hilos es implementada en la claseThreadGroup en el paquete java.lang.

Grupo de hilos por defecto:●Cuando una aplicación Java se inicializa, el sistema de ejecución crea unThreadGroup nombrado "main". Así, a menos que se especifique de otramanera, todo los nuevos hilos que se crean llegan a ser miembros del grupo

de hilos "main".

Hilos en java

il j

Page 10: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 10/14

10 de 14

La clase ThreadGroup●La clase ThreadGroup maneja grupos de hilos para aplicaciones de Java●Un ThrreadGroup puede manejar cualquier número de hilos.●

Una vez obtenido un ThreadGrupo de hilos es posible consultar información de otros hilos,o modificar el comportamiento de otros hilos.●Los grupos no solo pueden contener hilos sino también otros grupos de hilos

Hilos en java

Hil j

Page 11: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 11/14

11 de 14

Los Programas Multihilos

●Se usan cuando se requiere ejecutar múltiples hilos que comparteninformación y por lo tanto tienen que ejecutarse sincrónicamente.

●Por ejemplo:-

Cuando un hilo escribe datos a un archivo y otro hilo está leyendo datosdel mismo archivo.- En estos casos es necesario sincronizar los hilos para obtener los

resultados deseados.

Hilos en java

Hil j

Page 12: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 12/14

12 de 14

Sincronización de hilos●Aplicables a los escenarios tipo Productor/Consumidor●Ejemplo Productor/Consumidorclass Producer extends Thread {

private CubbyHole cubbyhole;private int number;public Producer(CubbyHole c, int number) {

cubbyhole = c;this.number = number;}

public void run() {

for (int i = 0; i < 10; i++) {cubbyhole.put(i);System.out.println("Productor #" + this.number + " coloca: " + i);try {

sleep((int)(Math.random() * 100));} catch (InterruptedException e) {}

}}

}

Hilos en java

Hil j

Page 13: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 13/14

13 de 14

Sincronización de hilos●Ejemplo Productor/Consumidor class Consumer extends Thread {

private CubbyHole cubbyhole;private int number;

public Consumer(CubbyHole c, int number) {cubbyhole = c;this.number = number;

}public void run() {

int value = 0;for (int i = 0; i < 10; i++) {value = cubbyhole.get();System.out.println("Consumidor #" + this.number + " obtiene: " + value);}

}}

El Productor y Consumidor comparten datos a través de un obj. Común CubbyHole.

La sincronización ocurre a bajo nivel(entre get() y put()).

Hilos en java

Hilos en java

Page 14: Presentacion Hilos Java

5/9/2018 Presentacion Hilos Java - slidepdf.com

http://slidepdf.com/reader/full/presentacion-hilos-java 14/14

14 de 14

PrácticaVer práctica hilos

Hilos en java