Ver Mensaje Individual
  #7 (permalink)  
Antiguo 18/08/2011, 08:50
ElAthlit
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: Consulta synchronized objeto

Hola Ronruby,
en primer lugar muchas gracias por tu tiempo y no solo eso, me has ayudado muchísimo.

Con tu ejemplo me ha quedado bastante más claro, y comprendiéndolo he creado un código desde 0 (pero viene a ser lo mismo) y me ha funcionado a la perfección de modo que si quito el synchronized me sale todo mezclado y al ponerlo me lo imprime por pantalla perfecto.

El problema que tengo ahora es que al hacer lo mismo escribiendo en fichero tengo problemas con el cierre cuando ya tengo creado el Stream, pero lo importante era comprender la idea del synchronized. Para esto último ya me busco la vida a ver como me lo monto.

Muchas gracias por todo y un saludo!!!!

Por si sirve a alguien o si quieres echar un vistazo, adjunto código:

Clase principal
Código Javascript:
Ver original
  1. public void Escritura(String strIDHilo){
  2.         try{
  3.                        
  4.             synchronized(System.out){
  5.                
  6.                 for (int i=0;i<100;i++){
  7.                     System.out.println(i + strIDHilo + "\r\n");
  8.                 }
  9.             }
  10.            
  11.             System.out.println("OK!!");
  12.            
  13.             }catch (Exception e){
  14.                 e.printStackTrace();
  15.             }
  16.     }
  17.    
  18.     public static void main(String[] args) {
  19.         Sincronized2 sin2 = new Sincronized2();
  20.         Sincronized3 sin3 = new Sincronized3();
  21.         sin2.start();
  22.         sin3.start();
  23.     }

Clase sincronized2 (HILO1)
Código Javascript:
Ver original
  1. public void run(){
  2.     try{
  3.         Sincronized1 sin1 = new Sincronized1();
  4.         sin1.Escritura("HILO1");
  5.         }catch (Exception e){
  6.             e.printStackTrace();
  7.         }
  8.    
  9.     }

Clase sincronized3 (HILO2)
Código Javascript:
Ver original
  1. public void run(){
  2.         try{
  3.         Sincronized1 sin1 = new Sincronized1();
  4.         sin1.Escritura("HILO2");
  5.         }catch (Exception e){
  6.             e.printStackTrace();
  7.         }
  8.    
  9.     }

Athlit