280 likes | 409 Views
INFORMATICA III. ESCUELA DE INGENIERIA ELECTRONICA. DEPARTAMENTO DE SISTEMAS E INFORMATICA. LA CLASE THREAD CONSTRUCTORES METODOS METODOS SYNCHRONIZED ANULADOS SENTENCIAS SYNCHRONIZED GRUPOS DE THREADS CONSTRUCTORES METODOS INTERFACE RUNNABLE EXCEPCIONES.
E N D
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA
LA CLASE THREAD • CONSTRUCTORES • METODOS • METODOS SYNCHRONIZED ANULADOS • SENTENCIAS SYNCHRONIZED • GRUPOS DE THREADS • CONSTRUCTORES • METODOS • INTERFACE RUNNABLE • EXCEPCIONES
Constructores má usados de Thread • public Thread ( String threadName) • construye un thread cuyo nombre es threadName public Thread () • construye un thread cuyo nombre es Thread concatenado con un dígito (Thread1, Thread2) public Thread(Runnable target) • Target es el objeto cuyo método run se va a ejecutar INFORMATICA III- 2003
La clase Thread • Métodos más importantes: public synchronized void start() • Causa que este thread comience a ejecutarse; la MVJ llama al método run de este thread. public void run() • activa el thread public final synchronized void join(long millis) throws InterruptedException • espera por la terminación INFORMATICA III- 2003
La clase Thread public void interrupt() • sale de un wait, sleep o join public boolean isInterrupted() • determina si un hilo ha sido interrumpido public static void yield() • cede el paso INFORMATICA III- 2003
La clase Thread • public final void stop() • Fuerza que el hilo detenga su ejecución public final void suspend() • cuando se invoca pasa al estado suspendido public final void resume() • abandona el estado suspendido public String toString() • Retorna un String que representa al hilo INFORMATICA III- 2003
La clase Thread • Métodos estáticos más interesantes: • public static Thread currentThread() • public static void sleep(long millis) throws InterruptedException INFORMATICA III- 2003
La clase Thread • Métodos de la clase Object que controlan la suspensión del Thread actual: • wait() (equivale a 0 milisegundos) • wait (milisegundos) • notify () notifyAll() INFORMATICA III- 2003
Wait y notify • Sirven para comunicar los threads entre sí synchronized void cuandoCondicion ( ) { while ( ! condicion ) wait ( ); ….hacer lo que sea necesario cuando la condicion sea cierta } INFORMATICA III- 2003
Wait y notify synchronized void cambiaCondicion ( ) { ….cambiar algún valor usado en condición notify ( ) ; // notifyAll ( ) } INFORMATICA III- 2003
Wait y notify • Para que el contenido del objeto sea estable todo debe ocurrir en método synchronized. • Cuando se suspende el thread libera en forma atómica el bloqueo del objeto. • La prueba de la condición debe estar siempre en un bucle. INFORMATICA III- 2003
Wait • public final void wait (long timeout) throws InterruptedException • public final void wait (long timeout, int nanos) throws InterruptedException • public final void wait () throws InterruptedException INFORMATICA III- 2003
Notify • public final notify ( ) • public final notifyAll ( ) INFORMATICA III- 2003
PÉRDIDA DEL ESTADO DE EJECUCIÓN • Un thread deja su estado de ejecución por una de las siguientes causas: • El método sleep se invoca. • El thread llama al método wait y espera que una determinada condición se satisfaga. • El thread está bloqueado por una I/O. • El método suspend se invoca. INFORMATICA III- 2003
Métodos synchonized anulados • Si una clase extendida anula un método synchronized, el nuevo método puede o no ser synchronized. • El método de la superclase continúa siendo synchronized. INFORMATICA III- 2003
Sentencias synchronized • Permite ejecutar código sincronizado sin invocar un método sincronizado bloqueo sentencia INFORMATICA III- 2003
Sentencias synchronized • Forma general: • synchronized (expresión) • sentencia Objeto a bloquear INFORMATICA III- 2003
Sentencias synchronized public static void abs (int [] values) { synchronized (values) { for (int i = 0; i< values; i++) { if (values [i] < 0) values [i] = -values[i]; } } } INFORMATICA III- 2003
Grupos de hilos • public class ThreadGroup extends Object • Un thread group representa un conjunto de hilos. Un thread group puede incluir también otros thread groups. INFORMATICA III- 2003
Grupos de hilos • Tiene dos constructores: • public ThreadGroup (String cadenanombre) • construye un ThreadGroup cuyo nombre es cadenanombre • public ThreadGroup ( ThreadGroup padre, String cadenanombre) • construye un ThreadGroup hijo de padre, llamado cadenanombre INFORMATICA III- 2003
Grupos de hilos • La clase Thread tiene tres constructores que permiten crear un Thread y asociarlo a un grupo: • public Thread (ThreadGrroup threadGroup, String nombre) • public Thread (ThreadGrroup threadGroup, Runnable objetoEjecutable) • public Thread (ThreadGrroup threadGroup, Runnable objetoEjecutable, String cadena) INFORMATICA III- 2003
Métodos principales de ThreadGroup public int activeCount(); • Retorna el numero de hilos activos public int activeGroupCount(); • Retorna el numero de grupos activos INFORMATICA III- 2003
Métodos de ThreadGroup public final void checkAccess(); • Determina si el thread actual tiene permiso para modificar el thread group. Si no tiene permiso lanza una excepción. public final void destroy() ; • Destruye este thread group y todos sus subgrupos INFORMATICA III- 2003
Métodos de ThreadGroup public int enumerate(Thread list[]) • Copia en el arreglo cada thread activo de este thread public int enumerate(Thread list[], boolean recurse) • Igual al anterior. Si el argumento booleano es true copia las referencias a los thread que pertenecen a los subgrupos que forman parte del thread group. Si el arreglo es demasiado chico, los ignora sin avisar nada. INFORMATICA III- 2003
Métodos de ThreadGroup public final ThreadGroup getParent(); • Retorna el padre del ThreadGroup public final boolean isDaemon() • Testea si este thread group es daemon.Un daemon thread group se destruye automaticamente cuando el ultimo thread es parado o su ultimo thread group se destruye public void list(); • Imprime información sobre el grupo en la salida estandar.Es útil para public final boolean parentOf(ThreadGroup g); • Testea si el thread group es el thread group del argumento o uno de sus ancestros INFORMATICA III- 2003
Interface Runnable public interface Runnable • La interface Runnable debería ser implementada por cualquier clase cuyas instancias vayan a ser ejecutadas por un thread. La clase debe definir un metodo llamado run sin argumentos. INFORMATICA III- 2003
Excepciones que pueden sel lanzadas por métodos de threads • SecurityException (checkAccess) • IlegalArgumentException (setPriority) • IlegalThreadStateException (suspend/resume) • InterruptedException (otro thread quiere interrumpir el actual) INFORMATICA III- 2003
BIBLIOGRAFÍA • Como programar en java Deitel y Deitel. Pearson Educación • Java. Fundamentos de Programación Judy Bishop. Addison-Wesley • http://java.sun.com/docs/books/tutorial INFORMATICA III- 2003