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" + i + "\r\n");
}
fr.flush();
fr.close();
}
}catch (Exception e){
e.getMessage();
}
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" + i + "\r\n");
}
fr.flush();
fr.close();
}
}catch (Exception e){
e.getMessage();
}
}
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.