Está en la página 1de 4

1 Sincronizacin de hilos

El programa de sincronizacin bsica de hilos fue desarrollado con la librera estndar de java (java.lang.Runnable), Runnable es una interfaz simple que abstrae la nocin de que se desea que algn cdigo se "ejecute" asncronamente. Para implementar Runnable, a una clase basta con implementar un solo mtodo llamado run. El siguiente ejemplo muestra el resultado de esta implementacin.

1.1 Cdigo Fuente


Clase Principal. El mtodo main crea un objeto ThreadA, ThreadB e inicia los dos hilos. public class Mythread { public static void main(String[] args) throws InterruptedException { List <String> mensaje=new ArrayList<String>(); ThreadA A=new ThreadA(mensaje); ThreadB B=new ThreadB(mensaje); Thread hilo2=new Thread(B); Thread hilo1=new Thread(A); hilo2.start(); hilo1.start(); } } SubClase A. public class ThreadA implements Runnable { private List <String> msj; public ThreadA(List <String> msj){ this.msj=msj; } @Override public void run() { while(true){ try{ Thread.sleep(1000); synchronized (msj){ msj.add("Mensaje"); msj.notify(); System.out.println("Hello world 1"); } } catch(Exception ex){} } } } SubclaseB public class ThreadB implements Runnable {

private List <String> msj; public ThreadB(List <String> msj){ this.msj=msj; } @Override public void run() { while(true){ try{ synchronized(msj){ if(msj.size()==0) msj.wait(); msj.remove(0); System.out.println("Hello world 2"); } }catch(Exception ex){} } } }

1.2 Resultados
Hello world 1 Hello world 2 Hello world 1 Hello world 2 Hello world 1 Hello world 2 Hello world 1 Hello world 2 Hello world 1 Hello world 2

2 Metodologas de interconexin
Para la comunicacin entre dos o ms ordenadores, necesitamos establecer un medio de comunicacin, en primer lugar debemos percatarnos de que exista un medio fsico entre estos dos dispositivos finales, en tal caso por Capa 3 del modelo OSI, especficamente REDES, realiza el envi de paquetes (PDU) mediante dos protocolos, TCP y UDP, los cuales se comunican mediante direcciones de IP, para que los dispositivos estn comunicados continuamente enviado paquetes, usamos los sockets de Java. Los sockets son un sistema de comunicacin entre procesos de diferentes mquinas de una red. Ms exactamente, un socket es un punto de comunicacin por el cual un proceso puede emitir o recibir informacin. Se realiz la comunicacin entre dos PC, mediante el uso de Cliente Servidor, donde un servidor permite la conexin a ms clientes. Para ambos lados se especifica el puerto de conexin (5000) y la direccin del servidor y de los clientes, teniendo en cuenta esto se realiza la conexin.

2.1 Cdigo fuente


Cliente

public Cliente( ) { try{ Socket skCliente = new Socket( HOST , PUERTO ); InputStream aux = skCliente.getInputStream(); DataInputStream flujo = new DataInputStream( aux ); System.out.println( flujo.readUTF() ); skCliente.close(); } catch( Exception e ) { System.out.println( e.getMessage() ); } } Servidor public Servidor( ) { try { ServerSocket skServidor = new ServerSocket( PUERTO ); System.out.println("Escucho el puerto " + PUERTO ); for ( int numCli = 0; numCli < 3; numCli++) { Socket skCliente = skServidor.accept(); // Crea objeto System.out.println("Sirvo al cliente " + numCli); OutputStream aux = skCliente.getOutputStream(); DataOutputStream flujo= new DataOutputStream( aux ); flujo.writeUTF( "Hola cliente " + numCli ); skCliente.close(); } System.out.println("Demasiados clientes por hoy"); } catch( Exception e ) { System.out.println( e.getMessage() ); } }

2.2 Resultados