Threads en java

13
Threads

Transcript of Threads en java

Page 2: Threads en java

Threads Un thread es un “contexto de ejecución”, proceso

ligero o tarea. Dentro de un programa pueden haber varios threads abiertos.

Un thread es un proceso ligero en donde hay un flujo secuencial de control y que utiliza los recursos disponibles para un programa.

Al ejecutar un programa Java pueden haber varios threads ejecutándose (manejo de eventos, main, ...).

Page 3: Threads en java

Threads

Page 4: Threads en java

Constructores de la clase Thread

Page 5: Threads en java

Ciclo de Vida de un Thread

Page 6: Threads en java

Métodos de la clase Thread

void start(): Empieza la ejecución del Thread (hilo). Invoca al método run() de dicho hilo.

• public void run(): Constituye el cuerpo de un hilo en ejecución. Este es el único método del interfaz Runnable. Es llamado por el método start() después de que el hilo apropiado del sistema se haya inicializado.

void stop(): Termina la ejecución del hilo. static void sleep (long millis) : permite que el thread

espere determinado tiempo que se especifica en el parámetro (en milisegundos). Da oportunidad a los threads de cualquier prioridad de

ejecutarse.

Page 7: Threads en java

Métodos de la clase Thread static void yield (): permite a los threads que se

encuentran en estado listo (runnable) y que tienen la misma prioridad del thread que ejecuta el yield, ejecutarse.

Da oportunidad solamente a threads que tengan igual prioridad de ejecutarse.

void suspend(): Se usa para suspender la ejecución de un thread sin marcar un límite de tiempo.

public final void resume() : Reanuda la ejecución de un Thread que estaba previamente en estado suspendido.

• public final boolean isAlive(): Permite conocer si un Thread está vivo, y ha sido iniciado (método start).

Page 8: Threads en java

Métodos de la clase Thread

public final void setPriority(int newPriority): Asigna al hilo la prioridad indicada por el valor pasado como parámetro. Hay bastantes constantes predefinidas para la prioridad, definidas en la clase Thread, tales como MIN_PRIORITY, NORM_PRIORITY y MAX_PRIORITY, que toman los valores 1, 5 y 10, respectivamente.

public final int getPriority(): Este método devuelve la prioridad del hilo de ejecución en curso.

public final void setName( String ): Este método permite identificar al hilo con un nombre. De esta manera se facilita la depuración de programas multihilo.

public final getName(): Este método devuelve el valor actual, del nombre asignado al hilo en ejecución.

Page 9: Threads en java

Cómo crear Threads?

Crear subclase de java.lang.Thread, haciendo overriding del método “run” de la clase “Thread”: public void run()

Un ejemplo: un thread para calcular números primosclass ThreadDePrimos extends Thread { long primoMinimo; ThreadDePrimos (long primoMinimo) { this.primoMinimo = primoMinimo; } public void run() { // calcular números primos

// mayores que primoMinimo }

}

Page 10: Threads en java

Cómo crear Threads?

class HiloSencillo extends Thread { public HiloSencillo (String str) { super(str); } public void run() { for (int i = 0; i < 10; i++) { System.out.println(i + " " + getName()); try { sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println(“FINAL: " + getName()); } }class EjemploDosHilos { public static void main (String[] args) { new HiloSencillo (“Hola").start(); new HiloSencillo(“Adios").start(); } }

Ver HiloSencillo.java

Page 11: Threads en java

Otra forma de crear Threads Interfase java.lang.Runnable:

public interface Runnable { public void run();

} Dos constructores en java.lang.Thread:

Thread(Runnable target) Thread(Runnable target, String nombre)

Modo: Crear clase que implemente la interfase

java.lang.Runnable. Redefinir el método run en la clase que implemente la

interfaz Runnable. Crear un Thread.

Page 12: Threads en java

Ejemploclass HiloSencillo2 implements Runnable { private String nombre; public HiloSencillo2(String str) { this.nombre=str; } public String getName () { return this.nombre; } public void run() { for (int i = 0; i < 10; i++) { System.out.println(i + " " + getName()); try { Thread.sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println("FINAL: " + getName()); }}

Page 13: Threads en java

Ejemplo

public class Ejemplo { public static void main (String[] args) { new Thread(new HiloSencillo2("Hola")).start(); new Thread(new HiloSencillo2("Adios")).start(); }}

Ver EjemploHilo2.java