Está en la página 1de 20

HILOS THREADS Procesos ejecutados simultneamente

ESTADO DE UN HILO EN
EJECUCION

MULTIPROCESOS vs MULTIHILOS
Hay

que distinguirmultihilo(multithread)
demultiproceso.
Elmultiprocesose
refiere a dos programas que se ejecutan
"aparentemente" a la vez, bajo el control
del Sistema Operativo. Los programas no
necesitan tener relacin unos con otros,
simplemente el hecho de que el usuario
desee que se ejecuten a la vez.
Multihilose refiere a que dos o ms
tareas se ejecutan "aparentemente" a la
vez, dentro de un mismo programa.

MULTIPROCESOS vs MULTIHILOS
el

multiproceso est implementado a


nivel
de
sistema
operativo,
el
programador no puede intervenir en el
planteamiento
de
su
ejecucin;
mientras que en el caso del multihilo,
como el programa debe ser diseado
expresamente
para
que
pueda
soportar
esta
caracterstica,
es
imprescindible que el autor tenga que
planificar adecuadamente la ejecucin
de cada hilo, o tarea.

Programas de flujo nico


Aplicacin

estndar de saludo:

public

class HolaMundo { static public void main( String


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

Aqu,

cuando se llama amain(), la aplicacin imprime


el mensaje y termina. Esto ocurre dentro de un nico
hilo de ejecucin (thread).

Programas de flujo
mltiple

Creacin y Control de
Hilos
La

clase Thread

Es la clase que encapsula todo el


control necesario sobre los hilos de
ejecucin (threads).
La claseThreades la nica forma
de controlar el comportamiento de
los hilos

Nuevo Thread
La

siguiente sentencia crea un


nuevo hilo de ejecucin pero no
lo arranca, lo deja en el estado
deNuevo Thread:

Thread MiThread = new


MiClaseThread();
Thread MiThread = new Thread( new
UnaClaseThread,"hiloA" );

Ejecutable
Thread MiThread = new
MiClaseThread(); MiThread.start();
Parado
Thread MiThread = new MiClaseThread();
MiThread.start();
try {
MiThread.sleep( 10000 );
}
catch( InterruptedException e )
{;
}

Muerto
Un hilo de ejecucin 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 mtodorun().
Por ejemplo,
public void run() {
int i=0;
while( i < 20 ) {
i++;
System.out.println( "i = "+i );
}
}

Tambin

se puede matar en cualquier


momento un hilo, invocando a su
mtodostop().
Thread MiThread = new MiClaseThread();
MiThread.start();
try {
MiThread.sleep( 10000 );
} catch( InterruptedException e )
{
;
}
MiThread.stop();

Mtodos de Clase
currentThread()
yield()
sleep(

long )
Mtodos de Instancia

start()
suspend()
getPriority()

stop()

run()
resume()

setName( String )

getName()
setPriority( int )

Creacin de un Thread
Hay

dos modos de conseguir


hilos de ejecucin (threads) en
Java. Una es implementando el
interfazRunnable, la otra es
extender la claseThread.

Estructura basica de los


hilos

Aqu el Main

Hilos con la interface


Runnable

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;
}
}
...

También podría gustarte