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

¿Cómo diseñar una API REST? (Youtube)

Java en ejemplos: creando nuestras propias excepciones

De errores y excepciones Una excepción en programación es una anomalía en el flujo de un programa. El programador puede anticiparse a ésta haciendo que su código pueda librarla y que el programa no termine abruptamente. Ejemplo. Una excepción podría ocurrir en un programa que lee archivos de texto, el programa es incapaz de leer líneas con acentos, apóstrofes, letras Ñ o símbolos raros. El programador tendría que saber manejar esas excepciones y mitigarlas. Un error es un problema en el programa que hará que éste termine abruptamente; el programador queda indefenso, no puede hacer nada al respecto para remediarlo. Este error puede ser falta de memoria o recursos del sistema, entre otros más. Ejemplo. Un programa pude cerrarse abruptamente al quedarse sin memoria el sistema operativo. En Java cada clase (propia o definida por el programador) es hija de la clase padre ``Object``. La clase ``Throwable`` es padre de la clase ``Exception`` y así sucesivamente. Como