Hilos

Páginas: 15 (3643 palabras) Publicado: 23 de noviembre de 2012
UNIDAD 6:       Hilos
Unidad 1
 Unidad 2
 Unidad 3
 Unidad 4
 Unidad 5
 Unidad 6
 Unidad 7
 Unidad 8
 Unidad 9
 Unidad 10
 
Programación con hilos
Un Thread es un "hilo" de ejecución de un programa. Casi podríamos decir que un Thread o Hilo es un programa en ejecución ya que en general un programa tiene un solo hilo de ejecución. Cuando se ejecuta un programa o un applet el sistemaoperativo (o el navegador) crea un hilo para ejecutar el programa. Todos los sistemas operativos que se utilizan actualmente (como Windows95 o superior, Linux, etc...) son multihilo, es decir, pueden ejecutar simultáneamente varios hilos (o varios programas si se quiere). Cuando hay varios programas ejecutándose simultáneamente hay varios hilos de ejecución.
En Java es posible y muy fácil crearprogramas con varios hilos de ejecución, es decir, se pueden crear programas que realizan varias tareas simultáneamente independientemente una de la otra. Por ejemplo, el programa Hilos cuyo código se muestra abajo arranca dos hilos aparte del propio y cada uno de los tres realiza una tarea diferente: uno escribe "PIM" cada segundo durante 7 segundos, otro escribe "PAM" cada medio segundo durante10 segundos y el último escribe "PUM" cada 0.8 segundos indefinidamente.

package unidad06;

public class Hilos {

public static void main(String[] args) {
Hilo1 h1=new Hilo1();
Hilo2 h2=new Hilo2();
h1.start();
h2.start();
long Tf=System.currentTimeMillis()+7000;
while (System.currentTimeMillis()<Tf) {
System.out.print("PIM ");
try {
Thread.sleep(1000);} catch(InterruptedException e) {
}
}
}

}

class Hilo1 extends Thread {

public void run() {
long Tf=System.currentTimeMillis()+10000;
while (System.currentTimeMillis()<Tf) {
System.out.print("PAM ");
try {
Thread.sleep(500);
} catch(InterruptedException e) {
}
}
}

}

class Hilo2 extends Thread {

Hilo2() {
setDaemon(true);
}public void run() {
while (true) {
System.out.print("PUM ");
try {
Thread.sleep(800);
} catch(InterruptedException e) {
}
}
}

}

Este es el resultado en la consola después de ejecutar java unidad06.Hilos:

Este programa merece varios comentarios.
Observe que Hilo1 e Hilo2  realizan todo su trabajo en el método public void run(). Esto es así siempre.Cuando un hilo se echa a andar llamando a su método start(), lo que ocurre es que el sistema le asigna un porcentaje de los recursos del procesador y ejecuta el método run.
Para medir el tiempo trancurrido se utiliza el método estático currentTimeMillis() de la clase System que devuelve el número de milisegundos transcurridos desde las cero horas del día 1º de enero de 1970. Observe que para hacerque un hilo se detenga durante unos milisegundos se llama al método estático sleep(long milisegundos) de la clase Thread. Este método puede producir una interrupción de tipo InterruptedException por lo cual es necesario escribir la llamada dentro de un try ... catch.
El programa termina su ejecución a los 10 segundos. ¿Por qué? Observe que el Hilo2 es un Daemon. La máquina virtual de Java terminasu ejecución cuando se llama al método System.exit(int) o cuando todos los hilos que quedan activos son Daemon. Esto último es lo que ocurre en este caso.
Nota: Los recursos asignados a un hilo pueden controlarse utlizando el método setPriority(). En esta lección no entraremos en los detalles de control de las prioridades ni en el tema de los grupos de hilos (ThreadGroups), nos concentraremosúnicamente en la utilización de los hilos para crear programas multihilo y en particular animaciones.
Existe un mecanismo muy cómodo y que se utiliza frecuentemente para implementar un hilo en una clase cualquiera. Consiste en implementar la interfaz Runnable ,que consta únicamente del método  public void run(), y crear un hilo (un Thread) con el constructor Thread(Runnable target) pasándole como...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Hilos
  • hila
  • hilos
  • Hila
  • Hilos
  • HILO
  • hila
  • Hilos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS