send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Multihilo en Java

  • 0 Respuestas
  • 1734 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Expermicid

  • *
  • Underc0der
  • Mensajes: 457
  • Actividad:
    0%
  • Reputación 0
  • _-Expermicid-_
    • Ver Perfil
  • Skype: expermicid.xd
« en: Julio 31, 2014, 10:11:32 pm »
¿Qué es una aplicación multihilo?

Java es un lenguaje de programación multihilo. Un programa de multiproceso contiene dos o más partes que se pueden ejecutar al mismo tiempo y cada parte puede manejar diferentes tareas al mismo tiempo, haciendo un uso óptimo de los recursos disponibles, especialmente cuando el equipo tiene varias CPU.

Por definición la multitarea es cuando varios procesos comparten recursos comunes de procesamiento, tales como CPU. Multithreading extiende la idea de la multitarea en aplicaciones donde se puede subdividir operaciones específicas dentro de una sola aplicación en hilos individuales.

Cada uno de los hilos se pueden ejecutar en paralelo. El sistema operativo divide el tiempo de procesamiento, no sólo entre las diferentes aplicaciones, sino también entre cada hilo dentro de una aplicación.

¿Cómo creamos una aplicación multihilo en Java? – Modo 1

Si la clase está destinado a ser ejecutado como un hilo, entonces pedemos lograr esto mediante la implementación de interface Runnable. Para crear un hilo debemos seguir los siguientes pasos:

Primer paso

Como primer paso, es necesario implementar el método run() proporcionado por la interface Runnable. Este método proporciona una puerta de entrada para el hilo y en el cual pondremos la lógica de negocio.

Código: Java
  1. public void run( )

Segundo paso

El segundo paso tendremos que instanciar Thread usando el siguiente constructor:

Código: Java
  1. You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login threadObj, You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login threadName);

Observemos que threadObj es una instancia de la interface Runnable y threadName es el nombre que recibe el nuevo hilo.

Tercer paso

Una vez creado el objeto Thread, lo podemos iniciar llamando al método start(), que ejecuta una llamada al método run(). Veamos como:

Código: Java
  1. void start( );

Veamos un ejemplo:

Código: Java
  1. class Multihilo implements You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login {
  2.    private You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login hilo;
  3.    private You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login nombreHilo;
  4.  
  5.    Multihilo(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login nombre){
  6.        nombreHilo = nombre;
  7.        You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Creando " +  nombreHilo);
  8.    }
  9.  
  10.    public void run() {
  11.       You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Ejecutando " +  nombreHilo );
  12.       try {
  13.          for(int i = 4; i > 0; i--) {
  14.             You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Hilo: " + nombreHilo + ", " + i);
  15.             // vamos a dormir el hilo unos 50s
  16.             You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.sleep(50);
  17.          }
  18.      } catch (You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login e) {
  19.          You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Hilo " +  nombreHilo + " interrumpido.");
  20.      }
  21.      You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Hilo " +  nombreHilo + " termino.");
  22.    }
  23.  
  24.    public void start ()
  25.    {
  26.       You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Iniciando " +  nombreHilo );
  27.       if (hilo == null)
  28.       {
  29.          hilo = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login (this, nombreHilo);
  30.          hilo.start ();
  31.       }
  32.    }
  33.  
  34. }
  35.  
  36. public class PruebaHilo {
  37.    public static void main(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login args[]) {
  38.  
  39.       Multihilo hilo1 = new Multihilo( "Hilo-1");
  40.       hilo1.start();
  41.      
  42.       Multihilo hilo2 = new Multihilo( "Hilo-2");
  43.       hilo2.start();
  44.    }  
  45. }

Observemos que en el ejemplo anterior implementamos la interfaz Runnable. Ademas, creamos dos hilos y los iniciamos.

Si ejecutamos el código anterior deberíamos obtener lo siguiente:

Código: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Creando Hilo-1
Iniciando Hilo-1
Creando Hilo-2
Iniciando Hilo-2
Ejecutando Hilo-1
Thread: Thread-1, 4
Ejecutando Hilo-2
Hilo: Hilo-2, 4
Hilo: Hilo-1, 3
Hilo: Hilo-2, 3
Hilo: Hilo-1, 2
Hilo: Hilo-2, 2
Hilo: Hilo-1, 1
Hilo: Hilo-2, 1
Hilo Hilo-1 termino.
Hilo Hilo-2 termino.

¿Cómo creamos una aplicación multihilo en Java? – Modo 2

La segunda forma de crear un hilo es crear una nueva clase que extiende la clase Thread utilizando los siguientes dos sencillos pasos. Este enfoque proporciona una mayor flexibilidad en el manejo de múltiples subprocesos creados usando los métodos disponibles en la clase Thread.

Primer paso

Tendremos que reemplazar el método run() que está disponible en la clase Thread. Este método proporciona una puerta de entrada para el hilo y en el cual pondremos la lógica de negocio.

Código: Java
  1. public void run( )

Segundo paso

Una vez creado el objeto Thread, lo podemos iniciar llamando al método start(), el cual ejecuta una llamada al método run().

Código: Java
  1. void start( );

Veamos un ejemplo:

Código: Java
  1. class Multihilo extends You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login {
  2.    private You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login hilo;
  3.    private You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login nombreHilo;
  4.  
  5.    Multihilo(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login nombre){
  6.        nombreHilo = nombre;
  7.        You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Creando " +  nombreHilo);
  8.    }
  9.  
  10.    public void run() {
  11.       You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Ejecutando " +  nombreHilo );
  12.       try {
  13.          for(int i = 4; i > 0; i--) {
  14.             You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Hilo: " + nombreHilo + ", " + i);
  15.             // vamos a dormir el hilo unos 50s
  16.             You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.sleep(50);
  17.          }
  18.      } catch (You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login e) {
  19.          You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Hilo " +  nombreHilo + " interrumpido.");
  20.      }
  21.      You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Hilo " +  nombreHilo + " termino.");
  22.    }
  23.  
  24.    public void start ()
  25.    {
  26.       You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.println("Iniciando " +  nombreHilo );
  27.       if (hilo == null)
  28.       {
  29.          hilo = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login (this, nombreHilo);
  30.          hilo.start ();
  31.       }
  32.    }
  33.  
  34. }
  35.  
  36. public class PruebaHilo {
  37.    public static void main(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login args[]) {
  38.  
  39.       Multihilo hilo1 = new Multihilo( "Hilo-1");
  40.       hilo1.start();
  41.      
  42.       Multihilo hilo2 = new Multihilo( "Hilo-2");
  43.       hilo2.start();
  44.    }  
  45. }

Observemos que en el ejemplo anterior extendemos de la clase Thread. Ademas, creamos dos hilos y los iniciamos.

Si ejecutamos el código anterior deberíamos obtener lo siguiente:

Código:
  1. Creando Hilo-1
  2. Iniciando Hilo-1
  3. Creando Hilo-2
  4. Iniciando Hilo-2
  5. Ejecutando Hilo-1
  6. Thread: Thread-1, 4
  7. Ejecutando Hilo-2
  8. Hilo: Hilo-2, 4
  9. Hilo: Hilo-1, 3
  10. Hilo: Hilo-2, 3
  11. Hilo: Hilo-1, 2
  12. Hilo: Hilo-2, 2
  13. Hilo: Hilo-1, 1
  14. Hilo: Hilo-2, 1
  15. Hilo Hilo-1 termino.
  16. Hilo Hilo-2 termino.

Fuente: codehero

Saludos
« Última modificación: Julio 31, 2014, 10:13:12 pm por Expermicid »

 

¿Te gustó el post? COMPARTILO!



[Video Curso] Iniciacion a Java por DesarrolloWeb y EscuelaIT Mayo 2014

Iniciado por graphixx

Respuestas: 3
Vistas: 1382
Último mensaje Febrero 23, 2015, 10:13:28 am
por Hu3c0
Como compilar programas Java en la consola de comandos de Windows

Iniciado por tar3kw0rm3d

Respuestas: 2
Vistas: 2089
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
[LIBRO] Programación avanzada en Java - Sonia Jaramillo Valbuena

Iniciado por graphixx

Respuestas: 1
Vistas: 2309
Último mensaje Noviembre 07, 2017, 12:34:40 pm
por K0m0dr3x
Java Extremo [Video Cursos Completos] [Español] [ISO] 2009

Iniciado por graphixx

Respuestas: 9
Vistas: 4143
Último mensaje Diciembre 04, 2017, 02:36:34 am
por graphixx
Tutorial: Traduccion de aplicaciones JAVA - Moviles [By :: SmartGenius :: ]

Iniciado por ProcessKill

Respuestas: 0
Vistas: 1449
Último mensaje Febrero 24, 2010, 04:26:07 pm
por ProcessKill