Hilos En Java

of 34/34
UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL Derechos de Autor y Permisos (original) Ing. Francisco Rodríguez Novoa TALLER DE PROGRAMACION II Docente: Ingº Carlos Zelada Chávez
  • date post

    17-Jun-2015
  • Category

    Technology

  • view

    94.801
  • download

    4

Embed Size (px)

description

Taller de Programacion I - Ingenieria Civil - UPSP

Transcript of Hilos En Java

  • 1. UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL Derechos de Autor y Permisos (original) Ing. Francisco Rodrguez Novoa TALLER DE PROGRAMACION II Docente: Ing Carlos Zelada Chvez

2.

  • THREADS (HILOS)

TEMA 8 3. THREADS (HILOS)

  • Conocidos tambin como procesos ligeros.
  • Un thread es un flujo de ejecucin secuencial dentro de un proceso.
  • Un mismo proceso java puede tener
  • a). Un nico thread (el thread principal) y por tanto se le llama monotarea.
  • b). Varios threads (por ejemplo el thread principal y el de gestin de eventos). Y por tanto se le llama monotarea.
  • Casi todas las clases referentes al manejo de threads se encuentran en el paquete java.lang.*

4. MULTIPROCESO VS MULTITAREA

  • No hay que confundir los dos conceptos.
  • Multiproceso significa que el equipo hardware cuenta ms de un procesador (CPU) y por tanto ejecuta varias tareas a la vez.
  • Multitarea significa que varias tareas comparten el nico procesador (CPU) dndonos la sensacin de multiproceso.
  • La multitarea se consigue mediante un planificador de tareas que van dando slots de CPU a cada tarea.

5. java.lang.Thread

  • La clase principal es java.lang,Thread.
  • Nos ofrece el API genrico de los threads as como la implementacin de su comportamiento, incluyendo:
  • arrancar
  • dormirse
  • parar
  • ejecutarse
  • esperar
  • gestin de prioridades.

6. java.lang.Thread(contin..)

  • La lgica que se va a ejecutar un thread se incluye en el mtodo:
    • public void run()
  • Cuando termina la ejecucin del mtodo run() se termina el thread.
  • La clase java.lang.Thread contiene un mtodorun() vaco.

7. java.lang.Runnable

  • Se trata de una interfaz.
  • Simplemente fuerza la implementacin de un mtodo:
  • public void run().
  • Existe para paliar la falta de herencia mltiple en el lenguaje java.

8. Implementando un thread

  • Existen dos tcnicas para crear un thread.
  • Heredar de la clase java.lang.Thread y sobreescribir el mtodo run().
  • Implementar la interfaz java.lang.Runnable (por tanto tenemos que implementar el mtodo run()) y crear una instancia de la clase java.lang.Thread pasndole el objeto que implementa java.lang.Runnable como parmetro.
  • Normalmente se usar la opcin Runnable cuando la clase que va a contener la lgica del thread ya herede de otra clase (Swing, Applets,.)

9. CICLO DE VIDA

  • Un thread puede pasar por varios estados durante su vida.
  • Ejecutndose
  • Pausado o Parado
  • Muerto
  • Existen distintos mtodos que provocan las transiciones entre estos estados.

10. Crear un thread

  • Para crear un Thread hay que instanciarlo llamando al constructor como en el resto de clases.
  • Dependiendo de cmo hayamos implementado el thread se actuar de una forma u otra:
  • Si hereda de la clase java.lang.Thread, simplemente se instancia nuestra clase.
  • Si implementa el interfaz java.lang.Runnable, se instancia la clase java.lang.Thread pasndole como parmetro del constructor una instancia de nuestra clase.

11. Ejemplo

  • public class AplicHilo1{
  • public static void main(String args[])
  • {
  • TortugaThread tortuga=new TortugaThread();
  • Thread liebre=new Thread(new LiebreThread());
  • }
  • }

12. Arrancar un thread

  • Para arrancar un thread hay que llamar al mtodo start()
  • El mtodo start() registra al thread en el planificador de tareas del sistema y llama al mtodo run() del thread.
  • Ejecutar este mtodo no significa que de forma inmediata comience a ejecutarse. Esto ya depender del planificador de tareas (Sistema Operativo) y del nmero de procesadores (Hardware)

13. Ejemplo Hilos

  • public class TortugaThread extends Thread
  • {
  • public void run()
  • {
  • int i=0;
  • System.out.println("Comienza la tortuga..");
  • while(i