Ir al contenido principal

Java Tip 15: Hilos

 

Java es un lenguaje de programación diseñado para ser concurrente y distribuido. Sin embargo, muchas veces una aplicación con procesos secuenciales (de una sola tarea)  no ofrecen el mejor rendimiento. Para eso existen los llamados procesos o programas multitarea. 

El paquete java.lang incluye dos elementos para la creación de aplicaciones multitarea en Java: la clase Thread y la interfaz Runnable. Mediante éstas, disponemos de dos caminos alternativos a la hora de implementar una aplicación multitarea:

  • Heredar la clase Thread
  • Implementar la interfaz Runnable

Ejemplo. Creamos una clase que extiende de la clase Thread.
MyHilo.java
package cityjava;

import static java.lang.System.out;

public class MyHilo extends Thread{
    private String nombre;

    public MyHilo(){}

    public MyHilo(String nombre){
         this.nombre = nombre;
    }

   public void setNombre(String nombre){
       this.nombre=nombre;
   }

   public String getNombre(){
       return nombre;
   }
   
    public static void main(String[] args){
       Thread hilo1 = new MyHilo("EJEMPLO 1");
       Thread hilo2 = new MyHilo("EJEMPLO 2");
       hilo2.start();
       hilo1.start();
    }

   public void run(){
     final int MAX = 100;
        for(int i=0; i < MAX; i++){
           out.println("Hola,"+this.nombre);
           out.flush();
        }
   }

    
}

Ejemplo. Creamos una clase que implemente de la interface Runnable.
MyTarea.java
package cityjava;

import static java.lang.System.out;

public class MyTarea implements Runnable{
   public void run(){
      for(int i=0; i < 10; i++){
         out.println("Nombre: "+Thread.currentThread().getName());
      try{
           Thread.sleep(100);
      }catch(InterruptedException e){
          out.println("Excepcion: "+e.getMessage());
        }
      }
   }

   public static void main(String[] args){
         MyTarea myTarea = new MyTarea();
         Thread t1 = new Thread(myTarea,"A");
         Thread t2 = new Thread(myTarea,"B");
         t2.start();
         t1.start();

   }
}

Ejemplos de programas que usan hilos:
  • Sistemas de envío de correos
  • Interfaces gráficas (tipo word, etc.)
  • Sistemas de telecomunicaciones
  • Etc.


Referencias
Martín Sierra, Antonio J., Programador Certificado Java 2. Curso Práctico 3era edición, pp 396, Ed. Alfaomega Ra-Ma.


Enlaces:
https://victomanolo.wordpress.com/la-clase-thread/
https://victomanolo.wordpress.com/implements-runnable-implementos-ejecutable/

Comentarios

Entradas populares de este blog

Clojure para programadores Java (1)

Clojure es un lenguaje de programación similar a Lisp. Corre bajo la JVM (Java Virtual Machine) y emplea la programación funcional y orientada a objetos. El sitio oficial dice: Clojure es un lenguaje de programación robusto, práctico y rápido con un conjunto de características útiles que juntas forman una herramienta simple, coherente y poderosa. Creando el Hola,mundo en Clojure. holamundo.clj (println "Hola, mundo en Clojure!!" ) La extensión de un programa en este lenguaje es .clj Como se puede notar la base es colocar las sentencias entre parentesis. ( operador/funcion var1 var2 varN) Deberás descargar Clojure, tener instalado Maven y Java. A continuación se muestra una forma de obtener el JAR de Clojure para ejecutar nuestros programas. En la Línea final podemos acceder al shel o REPL del lenguaje. $ git clone https ://github.com/clojure/clojure.git $ cd clojure $ mvn -Plocal -Dmaven.test.skip=true package $ java -jar clojure.jar E

Explorando la Programación Orientada a Aspectos (AOP), con @domix

Clojure para programadores Java(2)

      Siguiendo la serie de post sobre Clojure veremos los tipos de datos en este lenguaje de programación. Como cualquier otro lenguaje dependiente de la JVM posee tipos de datos. Ejemplos de tipos de datos en Clojure  "Esto es una cadena de texto. "  String  'W'  Character  34500  Long  7.54  Double  nil  null  bar  símbolo en Clojure  :bar  llave en Clojure  (1 2 3)  lista en Clojure  [1 2 3]  vector en Clojure  {"Alef" 1 "Bet" 2 }  mapa en Clojure REPL de Clojure Abrimos una terminal y tecleamos clj. Esto abrirá un REPL: Clojure 1.10 .2 user=> 1 +2 +3 +4 1 2 3 4 user=> + 3 4 5 6 # object[clojure.core$_PLUS_ 0 x1d572e62 "clojure.core$_PLUS_@1d572e62" ] 3 4 5 6 user=> (+ 3 4 5 6 ) 18 user=> ( * 4 5 6 7 ) 840 user=> "Esto es una cadena en Clojure." "Esto es una cadena en Clojure." user=> ( def texto "