Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin
En la presente unidad, se detalla la importancia de las interfaces, su creacin y uso. Adems, se detalla el manejo de errores en Java utilizando los bloques try, catch y finally. Finalmente, se revisan las colecciones existentes para albergar objetos en Java.
Objetivos
Reconocer los tipos de colecciones que existen. Utilizar las colecciones para agrupar objetos. Escribir hilos.
ndice
Colecciones Hilos
TEMA 1: COLECCIONES
Collection
Un Collection, llamado tambin contenedor, es simplemente un objeto que agrupa mltiples elementos en una sola unidad. Los Collections son usados para almacenar, recuperar, manipular y trasladar datos.
Map
Como se puede apreciar en la figura tenemos dos races en la jerarqua : Collection y Map. Esto es debido a que existe una ligera diferencia de funcionamiento entre ambas, bsicamente y sin entrar en detalles podramos decir que una Collection trabaja sobre conjuntos de elementos singulares mientras que un Map trabaja sobre pares de valores, por lo tanto existen pequeas diferencias entre los mtodos necesarios por unas y otras.
Collection
Collection. Es la interfase padre. Set. Es una coleccin que no permite elementos duplicados. List. Es una coleccin ordenada (secuencia). Un List puede contener elementos duplicados. Queue. Es una coleccin que trabajo en FIFO. Map. Una Coleccin que tiene keys. SortedSet. Es un Set que mantiene sus elementos en orden ascendente.
TEMA 2: HILOS
Introduccin
Todos los programadores estn familiarizados con la escritura de programas secuenciales. En cambio, los hilos ofrecen la posibilidad de que un solo programa ejecute varias tareas simultneamente.
10
Objetivos:
Entender el uso de los hilos. Conocer las 2 estrategias de creacin de hilos. Reconocer el cdigo de ejecucin de un hilo. Conocer los estados de un hilo. Entender el cambio de estados de un hilo.
11
ndice
Aplicaciones con un solo hilo de ejecucin Aplicaciones con hilos (Threads) Implementacin de hilos ( Threads ) Organizador de hilos La Clase Thread
Ejemplo de un hilo Por Herencia Ejecucin de un hilo
Interfase Runnable
Ejemplo de un hilo Por Implementacin
12
ndice
Un programa multi-hilos ( MultiThreads ) Estados de un hilo Prioridad en los hilos Controlando los hilos Hilo en estado de bloqueo
13
15
16
Organizador de hilos
Existe un Organizador de hilos (Thread scheduler), el cual es parte del JVM o del propio sistema operativo, y su funcin es decidir qu hilo ejecutar en un momento dado.
17
La Clase Thread
Cada hilo de ejecucin es representado por un objeto de tipo Thread. Ejemplo:
Thread myThread = Thread.currentThread();
18
19
Ejecucin de un hilo
Para ejecutar un hilo se llama a su mtodo start(). Este mtodo registra al hilo en el Organizador de hilos. La llamada al mtodo start() no ejecuta al hilo inmediatamente, slo lo hace elegible para ser ejecutado cuando el Organizador de hilos lo vea conveniente. Pero lo que realmente ejecuta el hilo es el cdigo que se encuentra en el mtodo run(). Si se llama directamente al mtodo run() del hilo, entonces no se estar aprovechando la simultaneidad que ofrecen los hilos.
20
Ejecucin de un hilo
Cuando el mtodo run() termina de ejecutarse, el hilo ha terminado de ejecutarse y se le considera muerto. Una vez que el hilo est muerto no hay forma de re-activarlo. El hilo muerto contina existiendo pero como si fuese cualquier objeto. Se puede acceder a sus datos y mtodos.
21
Interfase Runnable
La Clase Thread tiene otro constructor del tipo:
public Thread (Runnable myThread)
Se puede pasar al constructor del Thread cualquier objeto que implemente la interfase Runnable.
22
23
Por Herencia
Es
Por Implementacion
Es
simple de usar. Ya no es posible usar la herencia. No cumple estrictamente la POO (No cumple ES UN).
un poco complicado de implementar. Permite heredar de otra Clase que no es Thread. Cumple la POO (Esta asociado a).
24
OneThread one = new OneThread(); one.start(); TwoThread two = new TwoThread(); two.start(); ThreeThread three = new ThreeThread(); three.start();
} } 25
Estados de un hilo
Cuando se llama al mtodo start() el hilo no se ejecuta inmediatamente. El Organizador de hilos mueve al hilo al estado EN EJECUCIN. Es aqu cuando se ejecuta el mtodo run(). Un hilo que est EN EJECUCIN puede pasar a otros estados, como se ve a continuacin.
26
Estados de un hilo
EN EJECUCIN (running) Existen varios estados de inactividad:
EN REPOSO (sleeping) BLOQUEADO (blocked)
27
Estados de un hilo
28
30
yield()
Una llamada al mtodo yield() causa que el hilo actual que est en ejecucin se mueva al estado READY. Entonces el Organizador de hilos mover otro hilo al estado RUNNING. Con esto se permite ejecutar un hilo en reemplazo de otro.
32
sleep()
Un hilo que es mandado a dormir pasa el tiempo sin hacer nada y sin usar el CPU. El mtodo sleep() tiene 2 implementaciones:
sleep(long milisegundos) sleep(long milisegundos, int nanosegundos)
Del grfico se ve que un hilo cuando deja de dormir no contina su ejecucin inmediatamente. Depende del Organizador de hilos.
33
El bloqueo se da cuando el hilo tiene que esperar una indeterminada cantidad de tiempo.
34