Programacion Concurrente
Programacion Concurrente
1. OBJETIVO.
Comprender el concepto de multihilado.
Aprender a crear, manejar y destruir hilos.
Entender el ciclo de vida de un hilo.
2. BASE TEORICA COMPLEMENTARIA
CONCEPTO DE HILO (Thread).
Un proceso es un programa en ejecución que es localizado en la memoria por el
sistema operativo. Un hilo es una ejecución o flujo de control en el espacio de
direcciones de un proceso. Un proceso puede tener mas de un hilo. Todos los
hilos en un proceso tienen su propio contador de programa y su propia pila para
variables locales y direcciones de retorno de invocación de procedimientos.
public Thread ()
2
Programación Concurrente y Distribuida Multihilado
Creado
start()
Ocurrió
Preparado
evento de E/S
Expropiado
Terminó Planificado
tiempo notify()
notifyAll()
Activo
Espera evento
wait() de E/S
sleep()
stop()
Terminado
Esperando Durmiendo Muerto Bloqueado
Por herencia
public class X extends Thread
{...
public x()
{... }
public void run()
{....}
....
}
public class Principal //--aplicación
{ static X x1;
static X x2;
public static void main(String arg[]) throws
InterruptedException
{
3
Programación Concurrente y Distribuida Multihilado
x1 = new X();
x2 = new X();
x1.start();
x2.start();
...
}
}
Por implementación de interfase
import java.io.*
class X implements Runnable
{
public X()
{...}
public void run()
{
.....
}
.....
}
4
Programación Concurrente y Distribuida Multihilado
}
}
}
//--APLICACIÓN DE HILOS POR HERENCIA
public class AppHiloHerencia
{
public static void main(java.lang.String[] args)
{
HiloHerencia hilo1;
HiloHerencia hilo2;
hilo1=new HiloHerencia("ton",33);
hilo2=new HiloHerencia("tin",45);
hilo1.start();
hilo2.start();
}
}
5
Programación Concurrente y Distribuida Multihilado
4. CUESTIONARIO
a. Demuestre la utilización de los métodos join(), setPriority(), getPriority,
setName(), getName(), stop(), isAlive();
5. TRABAJO.
a. Escriba un programa en java que muestre un recuadro en el que varias
pelotas estén en movimiento caótico. Cuando una pelota llegue al final del
recuadro deberá moverse en la dirección opuesta.
6. BIBLIOGRAFÍA.
Doug Lea “Programación Concurrente en Java” 2da. Edición.
Addison Wesley 2001.
Deitel & Deitel “JAVA How to Program” 3ra. Edición Prentice Hall
1999.
Ken Arnold “El Lenguaje de Programación JAVA”. 3ra. Edición.
James Goslin Addison Wesley 2001
David Holmes