3. MULTIPROCESOS vs
MULTIHILOS
Hay que distinguir multihilo (multithread)
de multiproceso. El multiproceso se
refiere a dos programas que se ejecutan
"aparentemente" a la vez, bajo el control
del Sistema Operativo. Los programas
no necesitan tener relación unos con
otros, simplemente el hecho de que el
usuario desee que se ejecuten a la vez.
Multihilo se refiere a que dos o más
tareas se ejecutan "aparentemente" a la
vez, dentro de un mismo programa.
4. 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.
5. 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).
7. 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
8. 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" );
9. Ejecutable
Thread MiThread = new MiClaseThread();
MiThread.start();
Parado
Thread MiThread = new MiClaseThread();
MiThread.start();
try {
MiThread.sleep( 10000 );
}
catch( InterruptedException e )
{ ;
}
10. 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 );
}
}
11. 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();
12. Métodos de Clase
currentThread()
yield()
sleep( long )
Métodos de Instancia
start() run()
stop()
suspend()
resume()
setPriority( int )
getPriority() setName( String )
getName()
13. 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.