Está en la página 1de 5

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

También podría gustarte