Je suppose que vous dites le " Les threads s'interrompent "Vous voulez dire que la sortie des deux threads est intercalée. J'imagine aussi que vous écrivez à System.err ou System.out.
Je crois que ce que vous voyez est une conséquence de deux threads effectuant une sortie non synchronisée vers le même flux. Dans Eclipse, le flux dans lequel vous écrivez a suffisamment de mémoire tampon pour qu'un appel à write() ne se bloque pas (99,9% du temps). En revanche, lorsque vous exécutez à partir de la ligne de commande, il est tout à fait possible que chaque appel Java write() entraîne un appel système en écriture, bloquant un thread et ordonnant l'autre. En effet, il est même possible qu'un Java write() puisse se transformer en plusieurs appels système en écriture!
La réponse simple serait d'essayer de changer la mise en mémoire tampon pour votre flux. Malheureusement, je ne pense pas que les API Java vous permettent de faire cela pour les flux de sortie/erreur standard de la console.
D'autres réponses imparfaites comprennent:
Changer votre application pour synchroniser toutes vos écritures sur l'objet System.out/err. Malheureusement, cela risque de masquer les bogues de synchronisation dans le code que vous essayez de tester !!
Modifiez votre application pour la sortie vers un ByteArrayOutputStream(). Cela permettra de réduire le changement de "interruption", mais il pourrait encore arriver de temps en temps, sauf si vous synchronisez.
La meilleure réponse que je peux penser est de créer une classe wrapper flux/Reader qui synchronise écrit à un ByteArrayOutputStream, écrire tous les messages à une instance, puis vider le lot à System.out (ou ailleurs) quand le test est terminé. Cela peut masquer les bogues de synchronisation, mais il est beaucoup moins probable que si vous synchronisé sur les objets System.out/err.
S'il vous plaît fournir plus d'informations: Comment exactement "différent"? –
peut être beaucoup de choses, différentes JVM, débogage affectant les sorties de threads, différents paramètres de journaux et/ou niveaux de journaux –