Closed matthieu637 closed 7 years ago
J'ai également corriger un peu la javadoc. Il faut commencer par l'explication pour les méthodes, sinon ça n’apparaît pas dans la documention.
Le tag @author
est à répéter.
J'ai également ajouté un formateur commun à utiliser dans eclipse (pour augmenter la largeur des lignes).
Environ 1 fois sur 10 on a ce message d'erreur : Exception in thread "Thread-0" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Unknown Source) at cpp2017.parser.Parser.run(Parser.java:69) C'est comme si le verrou sur la queue : synchronized (LinkQueue.getInstance()) ne suffisait pas et je comprend pas pourquoi. La solution que j'avais trouvé c'était d'ajouter un lock(), mais bon ...
Ah d'accord je me demandais pourquoi il y avait le lock. Je n'arrive pas à reproduire ton erreur. Tu utilises quoi en main ? L'erreur vient vers le début ou la fin du programme ?
J'ai pull cette branche donc j'ai le même main, après mon run sous eclipse c'est run Principale (2) mais c'est le bon. Ca arrive au début, et ensuite le thread 10 n'affiche pas de lien. Mais après faut bien run une dizaine de fois avant de tomber dessus.
Après ça dépend sûrement de la machine, faut que je trouve un main() qui cause le bug à chaque fois
En mettant les start des 2 threads en même temps, j'ai l'erreur à chaque fois : Parser testJsoupParser = ParserFactory.getInstance().getParser(ParserFactory.TYPE_JSOUP_PARSER); Parser testJsoupParser2 = ParserFactory.getInstance().getParser(ParserFactory.TYPE_JSOUP_PARSER); testJsoupParser.registerRudder(testNaiveRudder); testJsoupParser2.registerRudder(testNaiveRudder); testJsoupParser2.start(); testJsoupParser.start();
Même avec une quinzaine de thread qui commence en même temps, je peux ne peux pas reproduire l'erreur.
Peux-tu me redonner les traces avec le dernier commit.
J'ai push une branche threadBloquant avec lequel j'ai l'erreur Exception in thread "Thread-1" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Unknown Source) at cpp2017.parser.Parser.run(Parser.java:69) Si quelqu'un pouvait valider avoir la même erreur que moi
J'ai réussi à avoir la même erreur sur ta branche avec déclenchement aléatoire. J'ai modifié le code, est-ce que la branche synchro déclenche toujours une erreur chez toi?
Non ça y est je n'ai plus d'erreur
Merci, je merge.
Ça devrait être bon pour l'utilisation des wait/notify avec plusieurs threads.