Date post: | 21-Dec-2015 |
Category: |
Documents |
Upload: | nain-zacarias |
View: | 22 times |
Download: | 6 times |
06/04/2015
1
C O N C U R R E N C I A
Por: M. en C. C. Irving Alejandro González Manríquez
THREADS (HILOS)
Una visión 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.
06/04/2015
2
THREADS (HILOS)
Programas de ejecución de flujo único
Programas de ejecución de flujo paralelo.
THREADS (HILOS)
Thread: proceso individual que se ejecuta dentro del
sistema.
Sus partes principales son:
• CPU virtual
• Código a ser ejecutado por el CPU
• Datos con los que trabaja el código.
06/04/2015
4
THREADS (HILOS)
El paquete java.lang incluye:
• Clase Thread
• Interfaz Runnable
THREADS (HILOS)
Para la creación y ejecución de hilos es necesario:
Sobrescribir el método run() el cual proporciona la base
para la definición de las tareas, de modo que el
código asociado a cada una de ellas tendrá que estar
definido en el interior de este método.
06/04/2015
5
• Ejecución 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();
}
06/04/2015
6
THREADS (HILOS) – IMPLEMENTACIÓN 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();
}
}
06/04/2015
7
THREADS (HILOS)
Cada instancia de HelloRunner es una encapsulación
THREADS (HILOS) - SCHEDULING
En java varios hilos pueden estar listos para ejecución
pero solo uno estarse ejecutando. El hilo se ejecuta
hasta que “muere” u otro hilo de mayor prioridad se
convierte en ejecutable.
06/04/2015
8
THREADS (HILOS) - ESTADOS
THREADS (HILOS) - ESTADOS
Nuevo
Preparado
Ejecución
Esperando/bloqueado/dormido.
Finalizado.
06/04/2015
9
THREADS (HILOS) – METODO SLEEP
Metodo estático de la clase Thread
Invocación: Thread.sleep(x);
La ejecución 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 ejecución.)
La llamada al método sleep() puede generar un
excepción del tipo InterruptedException
Threads (hilos) – implementacion de sleep
06/04/2015
10
THREADS (HILOS) – ESTABLECER NOMBRE
La clase Thread dispone de métodos 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 EJECUCIÓN
La clase Thread dispone del método estático
currentThread() que permite obtener una referencia al
Thread que se encuentre en ejecución.
06/04/2015
11
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");
}
}
}
}