threadshilos – threads

20
 HILOS – THREADS - Procesos ejecutados simultáneamente

Upload: gino

Post on 08-Oct-2015

216 views

Category:

Documents


0 download

DESCRIPTION

Para Publico en General

TRANSCRIPT

HILOS THREADS -

HILOS THREADS - Procesos ejecutados simultneamenteESTADO DE UN HILO EN EJECUCION

MULTIPROCESOS vs MULTIHILOSHay 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 MULTIHILOSel 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 nicoAplicacin 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 mltipleCreacin y Control de HilosLa clase ThreadEs 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 hilosNuevo ThreadLa 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" );EjecutableThread MiThread = new MiClaseThread(); MiThread.start();ParadoThread MiThread = new MiClaseThread(); MiThread.start(); try { MiThread.sleep( 10000 ); } catch( InterruptedException e ) { ; }MuertoUn 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 ClasecurrentThread()yield()sleep( long )Mtodos de Instanciastart()run()stop()suspend()resume()setPriority( int )getPriority()setName( String )getName()Creacin de un ThreadHay 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 Threadspublic 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; } } ...