Está en la página 1de 14

UNIVERSIDAD DEL CAUCA

Hilos en Java

W. Libardo Pantoja Ypez Ing. Sistemas

1 de 14

Hilos en java

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

2 de 14

Hilos en Java

Agenda Definicin de un hilo Estado de un hilo Prioridades de un hilo La clase ThreadGroup Los Programas multi-hilos Sincronizacin de hilos

3 de 14

Hilos en Java

Hilos/Thread/Procesos ligeros
- Def: Conjunto de instrucciones que se ejecutan secuencialmente y que sirve para llevar el control de un proceso. Un proceso es un programa en ejecucin y tiene asignado unos recursos. - Un hilo no es un programa (no puede correr por si solo) pero corre dentro de un programa.
-

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

4 de 14

Hilos en Java

Hilos/Thread/Procesos ligeros
- Un programa en Java puede tener mltiples hilos. - Se aprovechan las capacidades de Multitarea del Sistema Operativo. - La conmutacin entre hilos es ms rpida que la conmutacin entre procesos. - Java soporta hilos de modo nativo.

5 de 14

Hilos en java

Estado de un hilo

6 de 14

Hilos en Java

Threads en Java 1) Extender de la clase Thread y sobreescribir el mtodo run() 2) Implementando la interface Runnable, la cual posee un nico mtodo run(), que debemos sobreescribir.

7 de 14

Hilos en Java

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().

8 de 14

Hilos en java

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 de manipular los hilos de forma individual. La definicin de los grupos de hilos es implementada en la clase ThreadGroup en el paquete java.lang. Grupo de hilos por defecto: Cuando una aplicacin Java se inicializa, el sistema de ejecucin crea un ThreadGroup nombrado "main". As, a menos que se especifique de otra manera, todo los nuevos hilos que se crean llegan a ser miembros del grupo de hilos "main".

9 de 14

Hilos en java
La clase ThreadGroup La clase ThreadGroup maneja grupos de hilos para aplicaciones de Java Un ThrreadGroup puede manejar cualquier nmero de hilos. Una vez obtenido un ThreadGrupo de hilos es posible consultar informacin de otros hilos, o modificar el comportamiento de otros hilos. Los grupos no solo pueden contener hilos sino tambin otros grupos de hilos

10 de 14

Hilos en java

Los Programas Multihilos Se usan cuando se requiere ejecutar mltiples hilos que comparten informacin y por lo tanto tienen que ejecutarse sincrnicamente.

Por ejemplo: - Cuando un hilo escribe datos a un archivo y otro hilo est leyendo datos del mismo archivo. - En estos casos es necesario sincronizar los hilos para obtener los resultados deseados.

11 de 14

Hilos en java Sincronizacin de hilos Aplicables a los escenarios tipo Productor/Consumidor Ejemplo Productor/Consumidor
class 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) { } } } }

12 de 14

Hilos en java Sincronizacin 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 travs de un obj. Comn CubbyHole. La sincronizacin ocurre a bajo nivel(entre get() y put()).

13 de 14

Hilos en java

Prctica Ver prctica hilos

14 de 14

También podría gustarte