Вы находитесь на странице: 1из 22

No se puede mostrar la imagen.

Puede que su equipo no tenga suficiente memoria para abrir la imagen o que sta est daada. Reinicie el equipo y, a continuacin, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Un thread es un flujo secuencial de control dentro de un programa. Un Thread es similar a cualquier programa secuencial Un slo thread tambin tiene un principio, un final, una secuencia, y en un momento dado durante el tiempo de ejecucin del thread slo hay un punto de ejecucin. Un thread por si mismo no es un programa. No puede ejecutarse por s mismo, pero si con un programa.

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

El mtodo main() tambin arranca cada uno de los threads inmediatamente despus siguiendo su construccin con una llamada al mtodo start(). La salida de cada uno de los threads se mezcla con la salida del otro. Esto es porque los dos threads SimpleThread se estn ejecutando de forma concurrente. As, los dos mtodos run() se estn ejecutando al mismo tiempo y cada thread est mostrando su salida al mismo tiempo que el otro.

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Los thredas java estn implementados por la clase Thread, que es una parte del paquete java.lang. Esta clase implementa una definicin de threads independiente del sistema. Pero bajo la campana, la implementacin real de la operacin concurrente la proporciona una implementacin especfica del sistema. Para la mayora de las aplicaciones, la implementacin bsica no importa. Se puede ignorar la implementacin bsica y programar el API de los thread. Cuerpo del Thread Estado de un Thread La prioridad de un Thread Threads Daemon Grupos de Threads

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Toda la accin tiene lugar en el cuerpo del thread, que es el mtodo run() del thread. Despus de crear e inicializar un thread, el sistema de ejecucin llama a su mtodo run(). El cdigo de este mtodo implementa el comportamiento para el que fue creado el thread. Es la razn de existir del thread. Hay dos formas para proporcionar un mtodo run() a un thread Java: Crear una subclase de la clase Thread definida en el paquete java.lang y sobreescribir el mtodo run(). Proporcionar una clase que implemente el interface Runnable, tambin definido en el paquete java.lang.

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Nuevo Hilo
Cuando un thread est en este estado, es slo un objeto Thread vaco. No se han asignado recursos del sistema todava para el thread. Cuando un thread est en este estado, lo nico que se puede hacer es arrancarlo o pararlo. Llamar a otros mtodos distintos de start() o stop() no tiene sentido y causa una excepcin del tipo IllegalThreadStateException.

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Ejecutable
Cuando el mtodo start() crea los recursos del sistema necesarios para ejecutar el thread, programa el thread para ejecutarse, y llama al mtodo run() del thread. En este punto el thread est en el estado "Ejecutable, ya que el thread todava no ha empezado a ejecutarse cuando est en este estado. Muchos procesadores tienen un slo procesador, haciendo posible que todos los threads sean "Ejecutables" al mismo tiempo. Por eso, el sistema de ejecucin de Java debe implementar un esquema de programacin para compartir el procesador entre todos los threads "Ejecutables".

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

No Ejecutable Un thread entra en el estado "No Ejecutable" cuando ocurre uno de estos cuatro eventos: Alguien llama a su mtodo sleep(). Alguien llama a su mtodo suspend(). El thread utiliza su mtodo wait() para esperar una condicin variable. El thread est bloqueado durante la I/O.

Las rutas de escape para cada entrada en el estado "No Ejecutable": Si se ha puesto a dormir un thread, deben pasar el nmero de milisegundos especificados. Si se ha suspendido un thread, alguien debe llamar a su mtodo resume(). Si un thread est esperando una condicin variable, siempre que el objeto propietario de la variable renuncie mediante notify() o notifyAll(). Si un thread est bloqueado durante la I/O, cuando se complete la I/O.
Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Muerto
Un thread puede morir de dos formas: por causas naturares o siendo asesinado (parado). Una muerte natural se produce cuando su mtodo run() sale normalmente.

Tambin puede matar un thread en cualquier momento llamando a su mtodo stop().

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

El mtodo stop() lanza un objeto ThreadDeath hacia al thread a eliminar. As, cuando se mata al thread de esta forma, muere de forma asncrona. El thread moriri cuando reciba realmente la excepcin ThreadDeath.

El mtodo stop() provoca una terminacin sbita del mtodo run() del thread. Si el mtodo run() estuviera realizando clculos sensibles, stop() podra dejar el programa en un estado inconsistente.

Normalmente, no se debera llamar al mtodo stop() pero si se debera proporcionar una terminacin educada como la seleccin de una bandera que indique que el mtodo run() debera salir

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Cuando se crea un thread Java, hereda su prioridad desde el thread que lo ha creado. Tambin se puede modificar la prioridad de un thread en cualquier momento despus de su creaccin utilizando el mtodo setPriority(). Las prioridades de un thread son un rango de enteros entre MIN_PRIORITY y MAX_PRIORITY (constantes definidas en la clase Thread). El entero ms alto, es la prioridad ms alta. En un momento dado, cuando varios threads estn listos para ser ejecutados, el sistema de ejecucin elige aquellos thread "Ejecutables" con la prioridad ms alta para su ejecucin. Slo cuando el thread se para, abandona o se convierte en "No Ejecutable por alguna razn empezar su ejecucin un thread con prioridad inferior. Si dos threads con la misma prioridad estn esperando por la CPU, el programador elige uno de ellos en una forma de competicin.

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Cuando se elige un thread especifico se ejecutar hasta que ocurra alguna de las siguientes condiciones: Un thread con prioridad superior se vuelve "Ejecutable". Abandona, o su mtodo run() sale. En sistemas que soportan tiempo-compartido, su tiempo ha expirado. Luego el segundo thread tiene una oprtunidad para ejecutarse, y as continuamente hasta que el interprete abandone

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Para los casos anteriores los threads eran asncronos e independientes. Lo que significa que cada thread contena todos los datos y mtodos necesarios y no requeran recursos externos. Los threads se ejecutaban en su propio espacio sin involucrarse sobre el estado o actividad de otros threads que se ejecutaban de forma concurrente. Pero existen muchas situaciones donde ejecutar threads concurrentes que compartan datos y deban considerar el estado y actividad de otros threads. Este conjunto de situaciones de programacin son conocidos como escenarios 'productor/consumidor'; donde el productor genera un canal de datos que es consumido por el consumidor. El interferir o compartir informacin entre hilos concurrentes infiere el concepto de sincronizacin de threads.

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

(El productor) escribe datos en un fichero mientras que un segundo thread (el consumidor) lee los datos del mismo fichero. Si se introducen caracteres por teclado, el thread productor sita las pulsaciones en una pila de eventos y el thread consumidor lee los eventos de la misma pila. Estos dos ejemplos utilizan threads concurrentes que comparten un recurso comn; el primero comparte un fichero y el segundo una pila de eventos. Como los threads comparten un recurso comn, deben sincronizarse de alguna forma Para el caso de el Productor genera un entero entre 0 y 9 (inclusive), lo almacena en un objeto "CubbyHole", e imprime el nmero generado. El productor duerme durante un tiempo aleatorio entre 0 y 100 milisegundos antes de repetir el ciclo de generacin de nmeros

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

El Consumidor, es un objeto hambriento, consume todos los enteros de CubbyHole (exactamente el mismo objeto en que el productor puso los enteros en primer lugar) tan rpidamente como estn disponibles.

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Los objetos, como el CubbyHole que son compartidos entre dos threads y cuyo acceso debe ser sincronizado son llamados condiciones variables. El lenguaje Java permite sincronizar threads alrededor de una condicin variable mediante el uso de monitores. Los monitores previenen que dos threads accedan simultneamente a la misma variable. En un nivel superior, el ejemplo Productor/Consumidor utiliza los mtodos notify() y wait() del objeto para coordinar la actividad de los dos threads. El objeto CubyHole utiliza notify() y wait() para asegurarse de que cada valor situado en l por el Productor es recuperado una vez y slo una por el Consumidor

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Informtica III

UNIVERSIDAD DEL CAUCA Facultad de Ingeniera Electrnica y Telecomunicaciones

Informtica III

Вам также может понравиться