Está en la página 1de 5

CÁTEDRA:

TOPICOS SELECTOS DE PROGRAMACION

CATEDRÁTICO:

FERNANDO JAVIER RIOS SANCHEZ

CARRERA:

ING. EN SISTEMAS COMPUTACIONALES

TRABAJO:

HILOS Y MULTIHILOS

EJEMPLOS 1 Y 2
Hilos y MultiHilos
Ejemplo 1: Un hilo que genere los primeros N números enteros,
intervalos de 100 milisegundos.

Código: Clase GeneraEnteros

//Este es nuestro Hilo, aquí se hereda de la clase Thread y


se inicializan las variables.
public class GeneraEnteros extends Thread
{ int n;

public GeneraEnteros(int valorN)


{ n = valorN;
}

//El Hilo esta en un estado ejecutable, se utiliza un for para que se


ejecute el Hilo uno detrás de otro, según los términos definidos y una
vez ejecutado el Hilo muere de forma natural al acabar el for.
public void run()
{ for (int i = 0; i < n; i++)
{ System.out.println("Numero "+i);

//Aquí se pone en estado dormido al Hilo durante 1000 milisegundos o sea


1 segundo y si ocurre un error entonces se manda un mensaje que se ha
interrumpido dicho Hilo.
try
{ sleep(1000);
}
catch (InterruptedException e)
{ System.out.println("Interrupcion hilo ");
}
}
System.out.println("Termina hilo " );
}
}
Código: Main UsaGeneraEnteros

import javax.swing.JOptionPane;

//Este es el mein donde se manda a llamar a la clase GeneraEnteros y


donde nos pide introducir el numero de terminos.
public class UsaGeneraEnteros
{ public static void main (String[] args)
{ int numero = Integer.parseInt(JOptionPane.showInputDialog("Cuantos
terminos?"));

//En esta línea el Hilo nace o se crea pero todavía no se inicia, se


instancia la clase.
GeneraEnteros serie =new GeneraEnteros(numero);

//Aquí el Hilo inicia o se arranca.


serie.start();
}
}
Ejemplo 2: Se a continuación una aplicación que maneja dos
hilos.

Código: GeneraEnteros2

//Se se hereda de la clase Thread extendiéndola, se


inicializan las variables.
class GeneraEnteros2 extends Thread
{ int n, tiempo;
String nombre;

public GeneraEnteros2(int valorN, String nombreHilo, int retardo)


{ n = valorN;
nombre = nombreHilo;
tiempo=retardo;
}

//El Hilo se encuentra en un estado ejecutable, se utiliza un for para


que el Hilo se ejecute uno detrás de otro, entonces el Hilo muere de
forma natural.
public void run()
{ for (int i = 0; i < n; i++)
{ System.out.println("Numero "+i+ " en " + nombre);

//El hilo se encuentra en un estado dormido según se le asigne a la


variable “tiempo” en milisegundos, si se interrumpe el Hilo nos manda unb
mensaje de error.
try
{ sleep(tiempo);
}
catch (InterruptedException e)
{ System.out.println("Interrupcion "+ nombre);
}
}
System.out.println("Termina "+nombre );
}
}
Código: UsaGeneraEnteros2

import javax.swing.JOptionPane;

//Este es el main nuestro Hilo padre de donde se manda a llamar la clase


GeneraEnteros2, aquí nos pide introducir el número de términos a mostrar.
public class UsaGeneraEnteros2
{ public static void main (String[] args)
{ int numero = Integer.parseInt(JOptionPane.showInputDialog("Cuantos
terminos?"));

//Se crea el Hilo instanciando la clase y se directamente se introduce el


numero de términos y el tiempo.
GeneraEnteros2 serie =new GeneraEnteros2(numero, "hilo 1",1000);

//Se inicializa el Hilo para que posteriormente el Hilo quede en un


estado ejecutable.
serie.start();

//Dentro del try se crea un for para el Hilo principal se ejecuta y al


terminar la ejecución muere de forma natural.
try
{ for (int i = 0; i <5; i++)
{ System.out.println("valor i = "+i+" en Hilo principal en
main()");

//Se pone a dormir el Hilo principal durante 3000 milisegundos o sea 3


segundos pasando este tiempo vuelve a ejecutarse si existe una
interrupción nos mandara un mensaje de error en el catch.
Thread.sleep(3000);
}
}
catch (InterruptedException e)
{ System.out.println("Interrupci¢n del hilo principal en main()");
}
System.out.println("Termina Hilo principal en main()");
}
}

También podría gustarte