Java

Páginas: 8 (1788 palabras) Publicado: 25 de octubre de 2012
11. Threads

300

11. Threads
La máquina virtual Java implementa un entorno que permite a varias secuencias de instrucciones ejecutarse al mismo tiempo. Estas secuencias se llaman threads. La capacidad de tener varios threads o hilos de ejecución ejecutándose simultáneamente se llama concurrencia.

David Contreras Bárcena

301

11. Threads - Concurrencia
Los threads no se ejecutanverdaderamente al mismo tiempo. En realidad, el interpretador Java ejecuta los threads uno tras otro (restricción impuesta por todo sistema monoprocesador). Esto responde a la política empleada por el planificador del Sistema Operativo.
Thread Thread A A Thread Thread B B Ejecución... Ejecución... Espera del Espera del procesador procesador Ejecución... Ejecución... Ejecución... Ejecución...Espera del Espera del procesador procesador

Espera del Espera del procesador procesador tiempo

David Contreras Bárcena

302

11. Threads - Ciclo de vida
Definición
new Thread()

Bloqueado

Muerto

sleep() wait()

notify() stop() sleep() wait()

start()

Ejecutable
yield()

En curso

David Contreras Bárcena

303

11. Threads - Ciclo de vida
Definición: El thread seacaba de crear; todavía no está bajo el planificador (scheduler). Ejecutable: El thread está listo para ser ejecutado; se halla en la cola del planificador del sistema operativo. En ejecución: El thread está en ejecución hasta que sea sustituido por otro proceso (p.e., por un algoritmmo de planificación Round Robin) o hasta que finaliza. Bloqueado: El thread espera un evento que le permita volver ala cola del planificador. Muerto: El thread deja de existir.

David Contreras Bárcena

304

11. Threads - Planificador
El planificador es el encargado de enviar al procesador los threads según una política de prioridades. Todos los procesos que llegan al planificador, forman parte de una cola. El orden dentro de ésta viene dado por su prioridad y por su instante de llegada. En caso detener dos procesos de igual prioridad en la cola, ejecutará aquel que llegase primero, y posteriormente para que el proceso no acapare todo el consumo de CPU, se establecen políticas de rotamiento de procesos: round-robin.

David Contreras Bárcena

305

11. Threads - Planificador
Cuando el planificador suspensde la ejecución de un thread y pasa el control a otro:
Cuando un thread de mayorprioridad llega al planificador Cuando el planificador decide ejecutar otro thread de la misma prioridad (round-robin). Cuando se produce una situación crítica (por ejemplo: deadlock) y decide ejecutar un thread de prioridad inferior

David Contreras Bárcena

306

11. Threads - Estructura
Todo thread debe heredar de la clase Thread. La lógica a ejecutar por el hilo se implementará dentro delmétodo
public void run().

Al finalizar el método run el thread muere. Este método se invocará automáticamente al realizar el start() del hilo.
public class Hilo extends Thread { public Hilo(String nombre) { super(nombre); } public void run() { //Lógica del hilo } } } } David Contreras Bárcena

public class App { public static void main(String args[]) { Hilo h1 = new Hilo(“hilo1”); Hilo h2 =new Hilo(“hilo2”); h1.start(); h2.start();

307

11. Threads - Cambios de estado
Definición:
Hilo miHilo = new Hilo( );

Inicio:
miHilo.start( ); implícitamente se invoca el método run().

Muerte:
fin de la secuencia de ejecución del método run( )

Bloqueo de un thread :
Thread.sleep(10000); miHilo.wait( ); espera de recurso(s)

Desbloqueo de un thread :
período de tiempoterminado miHilo.notify( ) o miHilo.notifyAll( ) recurso(s) liberado(s)

David Contreras Bárcena

308

11. Threads - Cambios de estado
Hilo miHilo = new Hilo( ); miHilo.start(); miHilo.wait(); miHilo.notify();

Estado ejecución Estado bloqueado
Thread.sleep(1000);

1000 ms

Entra en el método run() del hilo

Sale del método run() del hilo

David Contreras Bárcena

309

11....
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Java
  • Java
  • java
  • JAVA
  • java
  • java
  • javiera
  • Java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS