Você está na página 1de 12

26/02/2015

CONCURRENCIA

Por: M. en C. C. Irving Alejandro Gonzlez Manrquez

THREADS (HILOS)
Una visin simple de una computadora es que contiene:
CPU : realizar procesamientos.
Memoria para almacenar el programa que el CPU esta
ejecutando.
Memoria para almacenar los datos con los que el
programa opera.

26/02/2015

THREADS (HILOS)
Programas de ejecucin de flujo nico
Programas de ejecucin de flujo paralelo.

THREADS (HILOS)
Thread: proceso individual que se ejecuta dentro del
sistema.
Sus partes principales son:
CPU virtual
Cdigo a ser ejecutado por el CPU
Datos con los que trabaja el cdigo.

26/02/2015

THREADS (HILOS)
Un hilo es una encapsulacin de:

THREADS (HILOS)
Ejecucin multitarea

26/02/2015

THREADS (HILOS)
El paquete java.lang incluye:
Clase Thread
Interfaz Runnable

THREADS (HILOS)
Para la creacin y ejecucin de hilos es necesario:
Sobrescribir el mtodo run() el cual proporciona la base
para la definicin de las tareas, de modo que el
cdigo asociado a cada una de ellas tendr que estar
definido en el interior de este mtodo.

26/02/2015

Ejecucin multitarea

THREADS (HILOS)
public class Principal{
public static void main(String []args){
Tarea1 t1 = new Tarea1();

//El hilo pasa a estado nuevo

Tarea2 t2 = new Tarea2();


t1.start();

//El hilo pasa a estado preparado

t2.start();
}

26/02/2015

THREADS (HILOS) IMPLEMENTACIN DE


RUNNABLE
class HelloRunner implements Runnable{
int i;
public void run(){
i=0;
while(true){
System.out.println("Hello "+i++);
if(i==50){ break; }
}
}
}

THREADS (HILOS)
public class ThreadTester{
public static void main(String args[]){
HelloRunner r = new HelloRunner();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}

26/02/2015

THREADS (HILOS)
Cada instancia de HelloRunner es una encapsulacin

THREADS (HILOS) - SCHEDULING

En java varios hilos pueden estar listos para ejecucin


pero solo uno estarse ejecutando. El hilo se ejecuta
hasta que muere u otro hilo de mayor prioridad se
convierte en ejecutable.

26/02/2015

THREADS (HILOS) - ESTADOS

THREADS (HILOS) - ESTADOS


Nuevo
Preparado
Ejecucin
Esperando/bloqueado/dormido.
Finalizado.

26/02/2015

THREADS (HILOS) METODO SLEEP


Metodo esttico de la clase Thread
Invocacin: Thread.sleep(x);
La ejecucin del hilo no se reanuda hasta que el periodo
marcado por x se cumpla. (la JVM es la que decide en
que momento se reanuda la ejecucin.)
La llamada al mtodo sleep() puede generar un
excepcin del tipo InterruptedException

Threads (hilos) implementacion de sleep

26/02/2015

THREADS (HILOS) ESTABLECER NOMBRE


La clase Thread dispone de mtodos para establecer y
obtener el nombre a un hilo:
public Thread(String nombre)
public void setName(String nombre)
public String getName()

THREADS (HILOS)-OBTENER HILO EN


EJECUCIN

La clase Thread dispone del mtodo esttico


currentThread()
currentThread() que permite obtener una referencia al
Thread que se encuentre en ejecucin.

10

26/02/2015

public class ExecuteThread extends Thread{


public ExecuteThread(String name) {
super(name);
}
public ExecuteThread() {
}
public void run(){
for(int i=1; i<=10; i++){
System.out.println("nombre:
"+Thread.currentThread().getName());

try{
Thread.sleep(1000);
}catch(InterruptedException ex){
System.out.println("Thread se interrumpio");
}
}
}
}

11

26/02/2015

public class TestCurrentThread {


public static void main(String[] args) {
ExecuteThread t1 = new ExecuteThread("juan");
ExecuteThread t2 = new ExecuteThread();
t2.setName("pepe");
t1.start();
t2.start();
}
}

12

Você também pode gostar