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

Hola a todos,
estoy haciendo pruebas con el synchronized para que varios hilos no me machaquen una información determinada y he estado realizando la siguiente prueba, que no se si hago algo mal o es el concepto que se me escapa.

Hilo1

Código PHP:
public void run(){
        try{
            
FileWriter fr = new FileWriter(new File("C:\\TEST.txt"), true);
            
synchronized (fr) {
                
                for (
int i=0;i<10000;i++){
                    
fr.write("A" "\r\n");
                }
            
            
fr.flush();
            
fr.close();
            }
                
        }catch (
Exception e){
            
e.getMessage();
        } 
Hilo2

Código PHP:
public void run(){
        try{
            
            
FileWriter fr = new FileWriter(new File("C:\\TEST.txt"), true);
            
            
synchronized (fr) {
                for (
int i=0;i<10000;i++){
                    
fr.write("B" "\r\n");
                }

            
fr.flush();
            
fr.close();    
            }    
            
        }catch (
Exception e){
            
e.getMessage();
        }
        
    } 
Básicamente hacen lo mismo.

Entiendo que al poner el synchronized cuando entra uno de los dos hilos, el otro se tiene que esperar a que deje de usar el objeto para poder hacer uso de él.

El resultado del escenario actual, es que me encuentro todo mezclado, las lineas del Hilo1 con las del Hilo2.

¿Porque no se espera el segundo hilo a que acabe de escribir el primero?

Muchas gracias a todos por vuestro tiempo y ayuda.

Un saludo.