hilos – threads en java

20
HILOS THREADS - Procesos ejecutados simultáneamente

Upload: carlos-anibal-riascos-hurtado

Post on 20-Jul-2015

199 views

Category:

Education


6 download

TRANSCRIPT

Page 1: Hilos – threads   en java

HILOS – THREADS -Procesos ejecutados simultáneamente

Page 2: Hilos – threads   en java

ESTADO DE UN HILO EN

EJECUCION

Page 3: Hilos – threads   en java

MULTIPROCESOS vs

MULTIHILOS Hay que distinguir multihilo (multithread)

de multiproceso. El multiproceso serefiere a dos programas que se ejecutan"aparentemente" a la vez, bajo el controldel Sistema Operativo. Los programasno necesitan tener relación unos conotros, simplemente el hecho de que elusuario desee que se ejecuten a la vez.

Multihilo se refiere a que dos o mástareas se ejecutan "aparentemente" a lavez, dentro de un mismo programa.

Page 4: Hilos – threads   en java

MULTIPROCESOS vs

MULTIHILOS el multiproceso está implementado a

nivel de sistema operativo, el

programador no puede intervenir en el

planteamiento de su ejecución; mientras

que en el caso del multihilo, como el

programa debe ser diseñado

expresamente para que pueda soportar

esta característica, es imprescindible

que el autor tenga que planificar

adecuadamente la ejecución de cada

hilo, o tarea.

Page 5: Hilos – threads   en java

Programas de flujo único

Aplicación estándar de saludo:

public class HolaMundo { static public void main( String args[] )

{ System.out.println( "Hola Mundo!" ); } }

Aquí, cuando se llama a main(), la aplicación imprime el

mensaje y termina. Esto ocurre dentro de un único hilo de

ejecución (thread).

Page 6: Hilos – threads   en java

Programas de flujo múltiple

Page 7: Hilos – threads   en java

Creación y Control de Hilos

La clase Thread

◦ Es la clase que encapsula todo el control

necesario sobre los hilos de ejecución

(threads).

◦ La clase Thread es la única forma de

controlar el comportamiento de los hilos

Page 8: Hilos – threads   en java

Nuevo Thread

La siguiente sentencia crea un nuevo

hilo de ejecución pero no lo arranca,

lo deja en el estado deNuevo Thread:

Thread MiThread = new MiClaseThread();

Thread MiThread = new Thread( new

UnaClaseThread,"hiloA" );

Page 9: Hilos – threads   en java

Ejecutable

Thread MiThread = new MiClaseThread();

MiThread.start();

Parado

Thread MiThread = new MiClaseThread();

MiThread.start();

try {

MiThread.sleep( 10000 );

}

catch( InterruptedException e )

{ ;

}

Page 10: Hilos – threads   en java

Muerto

Un hilo de ejecución se puede morir de dos formas: por causas naturales o porque lo maten (con stop()).

Un hilo muere normalmente cuando concluye de forma habitual su método run().

Por ejemplo,

public void run() {

int i=0;

while( i < 20 ) {

i++;

System.out.println( "i = "+i );

}

}

Page 11: Hilos – threads   en java

También se puede matar en cualquier momento un hilo, invocando a su método stop().

Thread MiThread = new MiClaseThread(); MiThread.start();

try {

MiThread.sleep( 10000 );

} catch( InterruptedException e )

{

;

}

MiThread.stop();

Page 12: Hilos – threads   en java

Métodos de Clase

currentThread()

yield()

sleep( long )

Métodos de Instancia

start() run()stop()

suspend()resume()

setPriority( int )getPriority() setName( String )

getName()

Page 13: Hilos – threads   en java

Creación de un Thread

Hay dos modos de conseguir hilos de

ejecución (threads) en Java. Una es

implementando el interfazRunnable,

la otra es extender la clase Thread.

Page 14: Hilos – threads   en java
Page 15: Hilos – threads   en java

Estructura basica de los hilos

Page 16: Hilos – threads   en java

Aquí el Main

Page 17: Hilos – threads   en java

Hilos con la interface

Runnable

Page 18: Hilos – threads   en java
Page 19: Hilos – threads   en java
Page 20: Hilos – threads   en java

Suspender y Reanudar

Threads public class java1005 extends Applet implements

Runnable { ...

class ProcesoRaton extends MouseAdapter {

boolean suspendido;

public void mousePressed( MouseEvent evt ) {

if( suspendido )

t.resume();

else t.suspend();

suspendido = !suspendido;

}

}

...