bonjour

j'ai créé un programme pour persister des objets, en utilisant les classes FileOutputStream et ObjectOutputStream.writeObject, l'objet paramétré est :

HashMap(String,Object)

où l'objet est un int.

puis de manière concurrente je lis ce fichier en faisant un cast.

ces 2 opérations (écriture et lecture) se font dans 2 threads, avec un boucle pour l'écriture :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
for(int i=0;i<5000;i++){
    écrit(i);
}
et la lecture est :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
while (true){
    int n=lit (n);
    System.out.println (n);
}
la lecture peut échouer (au moment où le fichier est ouvert en écriture); alors il y a une pause de la lecture (Thread.sleep(1000));

le résultat est bien l'apparition d'erreurs et ça remarche après une pause, mais les nombres affichés ne sont pas strictement croissants....

comment cela se fait-il?
je suis désolé, je n'ai pas le code présentement, je vous le fournis dès que possible.

olivier