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

Java Tip 1: Importaciones por default

Tip 1 : Todas las clases del paquete java.lang se importan por defecto. Podríamos hacer algo como esto: import java.lang.System ; import java.lang.String ; import java.lang.Boolean ; import java.lang.Integer ; import java.lang.Short ; import java.lang.StringBuilder ; import java.lang.StringBuffer ; O cosas (aberrantes) como: //Traernos todas las clases del paquete java.lang import java.lang.* ; Sin embargo, no es necesario. Repitamos esto como un mantra: Todas las clases del paquete  java.lang  se importan por defecto, no es necesario escribir de más .

Java Tip 28: hilos virtuales en Java

Con Java 21 entra un nuevo concepto: hilos virtuales java ( Java Virtual Threads ).  La cual es una nueva característica que nos permite crear miles o millones de hilos (tareas en paralelo). Los cuales se diferencian de los hilos comunes ( Platform Threads ) al no depender del sistema operativo , puesto que son virtuales. De estos se encargará la JVM. Al usar hilos virtuales ahorramos recursos del procesador y de memoria del sistema , sin importar si estamos creando y/o usando miles o millones. Los hilos virtuales son ideales para aplicaciones modernas donde se requiere esperar y recibir respuestas o acceder a bases de datos remotas, entre otras cosas. Además no impide usar los hilos comunes que dependen del sistema operativo. Observemos un ejemplo de uso de hilos virtuales. VirtualThreadsDemo.java package com.comunidad.demo; public class VirtualThreadsDemo { public static void main (String [] args) throws InterruptedException { // Crear un Virtual Th...

Java Tip 20: JDBC (2da parte)

Continuamos con esta serie sobre JDBC . Como dijimos la vez anterior JDBC( Java Database Connectivity ) es el estándar de conectividad de bases de datos de Java y proporciona un mecanismo para que los programas Java se conecten a las bases de datos. En este post veremos ejemplos de su uso. Requisitos: Tener nociones de Java.  Tener nociones de SQL (usaremos H2). Tener nociones de Maven. Creando una aplicación JDBC Crearemos una sencilla aplicación que se conecte a una BD H2 (ver  tutorial ). Pasos: Crearemos una tabla a la que llamaremos Cursos. La cual tendrá los siguientes campos: id, titulo, materia, instructor, fecha y hora. Crear la aplicación Java usando Maven. Crearemos instrucciones SQL para consultar la información, ingresar nuevos cursos, actualizar y eliminar registros. Ejecutar la aplicación con Maven. 1. Creamos la tabla con sus seis campos (agregaremos los datos con la aplicación Java): CREATE OR REPLACE TABLE CURSOS( id bigint ...