Está en la página 1de 3

LABORATORIO Nro 04

CREACION Y MANIPULACION DE HILOS (THREADS) EN JAVA OBJETIVOS: Aprender los conceptos de programacin concurrente en los sistemas operativos. Aprender a crear y manipular procesos concurrentes en java; uso de los mtodos de la clase Threads y la interfaz Runnable. QUE ES UN THREAD? Un threads es un hilo de ejecucin: que se ejecuta en paralelo e independiente de otros hilos, puede trabajar sobre datos propios y datos compartidos, puede en un momento dado pararse, reiniciarse, sincronizarse o esperar a otros hilos. un hilo no es un cdigo, si no quien ejecuta secuencialmente el cdigo y adems pueden ejecutarse en paralelo al cdigo de los dems hilos. FUNCIONAMIENTO BSICO DE UN THREAD EN JAVA: Los threads ejecutan el cdigo que se encuentra dentro de algn mtodo run(), bien del mismo hilo o de otro objeto. Todo thread posee un mtodo run() que por defecto es el cdigo que se ejecuta cuando se pone en marcha el thread, este mtodo por defecto se encuentra vacio. El mtodo run() no es exclusivo de los threads otros objetos pueden implementar este mtodo (Interfaz runnable).

CREACION Y PUESTA EN MARCHA DE THREADS: Para ejecutar un nuevo hilo se ejecuta el mtodo start() del hilo. Por ejem.: Thread miThread = new Thread(); miThread.start(); Invoca el mtodo start() y pasa a ejecutar cdigo del mtodo run(). Existen dos mecanismos para trabajar con threads: Heredar de la clase thread y la otra implementar el interface Runnable. HEREDAR DE LA CLASE THREAD: Se hereda de la clase Thread y se sobrescribe el mtodo run(). Ejm.: private class hilo extends Thread //crea la clase hilo que hereda de la clase Thread.

Sistemas Operativos

-1-

Ing. Grover Q.Y.

IMPLEMENTAR EL INTERFACE RUNNABLE : Es la forma habitual de crear hilos. Los interfaces proporcionan al programador una forma de agrupar el trabajo de infraestructura de una clase. Se utilizan para disear los requerimientos comunes al conjunto de clases a implementar. El interfaz define el trabajo y la clase, o clases, que implementan el interfaz para realizar ese trabajo. Ejm.: class Hilo1 implements Runnable{ String s; public Hilo1(String s){ this.s = s; }

EJERCICIO Nro 1: Crear un form en la cual muestre la ejecucin de una tarea, (ejm mostrar el incremento de un contador cada seg. En un label) y a la vez mostrar mensaje que se ingresan atraves de una caja de texto, cada vez que se pulse un botn. SOLUCION: Creamos una nueva clase dentro de la clase principal del frame private class hilo extends Thread { private int contador = 0; public void run(){ //toda la ejecucion del hilo while(true){ try { lbl_seg.setText(Integer.toString(contador++)); Thread.sleep(1000); } catch (InterruptedException ex) { Logger.getLogger(aplicacion_01_hilo.class.getName()).log(Level.SEVERE, null, ex); } } } } Luego, creamos el hilo e inicializamos: public aplicacion_01_hilo() { initComponents(); hilo h = new hilo(); h.start(); System.out.println("HOLA"); //se agrega una nueva tarea, tambin se

Sistemas Operativos

-2-

Ing. Grover Q.Y.

pueden agregar otras tareas o hilos mientras el hilo h se va ejecutando. } Finalmente agregamos un botn y una caja de texto escribiendo en el evento del botn lo siguiente: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { javax.swing.JOptionPane.showMessageDialog(this, "Mi Nombre es: " + jTextField1.getText());// TODO add your handling code here: } EJERCICIO Nro 2: Agregar al ejercicio anterior (02) nuevas hilos de ejecucin similar al anterior pero mostrando el incremento cada 1/2 seg y 1/4 de seg. Respectivamente. EJERCICIO Nro 3: crear dos hilos de ejecucin implementando la interfaz runnable, que muestre un contador incrementndose hasta 10 veces. public class hilos_ver2 { public static void main(String[] args){ Hilo1 h1 = new Hilo1("H1"); Hilo1 h2 = new Hilo1("H2"); Thread t1 = new Thread(h1); Thread t2 = new Thread(h2); t1.start(); t2.start(); } } class Hilo1 implements Runnable{ String str1; public Hilo1(String str2){ this.str1 = str2; } public void run(){ for(int i=0; i<10; i++){ System.out.println("HILO: "+s+" => "+i); try{ Thread.sleep(Math.round(Math.random()*1000)); }catch(InterruptedException e){} } } } EJERCICIO Nro 4: implementando la interfaz runnable, crear 02 hilos de ejecucin que muestre mensajes una cada 2 seg, y la otra cada 5 segundos, mostrarlo en un form utilizando etiquetas o label, cajas de texto, botones, etc. Adems debe mostrar los estados de los hilos.

Sistemas Operativos

-3-

Ing. Grover Q.Y.

También podría gustarte