UNIDAD III.- Programación Concurrente

Transcripción

UNIDAD III.- Programación Concurrente
Tópicos Selectos de Programación
UNIDAD III.- Programación Concurrente
Multitarea
–
La multitarea se refiere a la capacidad de una computadora para ejecutar multiples
trabajos concurrentemente (sistema operativo UNIX)
Multihilo
–
La capacidad multihilos se refiere a múltiples hilos controlados por un solo programa
(navegador)
Hilo
–
–
–
–
Una instancia de la clase java.lang.Thread.
Un thread es un objeto.
Un hilo de ejecución es un proceso con su propio stack.
El hilo principal: main().
Métodos de Thread:
– start()
– yield()
– sleep()
– run()
public void run() {
// El código del hilo va aquí
}
Creación de un Hilo
–
–
Heredando de java.lang.Thread
Implementando la interfaz Runnable
Rafael Rivera López
1
Tópicos Selectos de Programación
Heredando de Thread
class MiHilo extends Thread {
public void run() {
System.out.println("Esto se ejecuta como un subproceso");
}
}
–
El método run() no lleva parámetros:
class MiHilo extends Thread {
public void run() {
System.out.println("Esto se ejecuta como un subproceso");
}
public void run(String s) {
System.out.println("String en run es " + s);
}
}
–
El método sobrecargado es ignorado por el Thread. Es un método más.
Implementando Runnable
class MiRunnable implements Runnable {
public void run() {
System.out.println("Esto se ejecuta como un subproceso");
}
}
MiHilo t = new MiHilo( );
MiRunnable r = new MiRunnable();
Thread t = new Thread(r);
–
El objeto Runnable pasado al constructor de Thread es llamado “el destino”
Rafael Rivera López
2
Tópicos Selectos de Programación
Ejemplo:
public class TestThreads {
public static void main (String [] args) {
MiRunnable r = new MiRunnable();
Thread foo = new Thread(r);
Thread bar = new Thread(r);
Thread bat = new Thread(r);
}
}
Formas del Constructor de Thread
–
–
–
–
Thread()
Thread(Runnable target)
Thread(Runnable target, String name)
Thread(String name)
Estados de un Thread
–
–
–
–
Estado new: Cuando se instanció la clase, el thread no es alive.
Estado alive: Cuando el método start() es llamado.
Estado dead : Cuando el método run() termina.
Método isAlive() para determinar si un hilo esta iniciado y no ha concluido su ejecución.
Iniciando un Thread
t.start();
–
–
–
Un nuevo hilo de ejecución inicia (con un nuevo stack).
El hilo se mueve del estado new al estado runnable.
Cuando el hilo tiene oportunidad de ejecutarse, el método run() corre.
Rafael Rivera López
3
Tópicos Selectos de Programación
Ejemplo:
class OtroRunnable implements Runnable {
public void run() {
for(int x =1; x < 6; x++) {
System.out.println("Runnable corriendo");
}
}
}
public class TestThreads {
public static void main (String [] args) {
OtroRunnable r = new OtroRunnable();
Thread t = new Thread(r);
t.start();
}
}
¿Cual es la salida?
Otro Ejemplo:
class NameRunnable implements Runnable {
public void run() {
System.out.println("Runnable corriendo");
System.out.println("Ejecutandose porby " +
Thread.currentThread().getName());
}
}
public class NameThread {
public static void main (String [] args) {
NameRunnable nr = new NameRunnable();
Thread t = new Thread(nr);
t.setName("Pedro");
t.start();
}
}
¿Cual es la salida?
Rafael Rivera López
4
Tópicos Selectos de Programación
Otro Ejemplo:
public class NameThread {
public static void main (String [] args) {
NameRunnable nr = new NameRunnable();
Thread t = new Thread(nr);
t.start();
}
}
¿Cual es la salida?
Otro Ejemplo:
public class NameThreadTwo {
public static void main (String [] args) {
System.out.println("El hilo es " +
Thread.currentThread().getName());
}
}
¿Cual es la salida?
Hilos y la memoria
Rafael Rivera López
5

Documentos relacionados