Maison >Java >javaDidacticiel >Pourquoi System.out.println() et System.err.println() ne sortent-ils pas dans l'ordre dans lequel ils sont appelés ?
System.out.println et System.err.println Ordre de sortie
Lors de l'utilisation de System.out.println() et System.err .println(), il est crucial de noter qu’il s’agit de flux de sortie distincts qui peuvent se comporter de manière imprévisible. Comme vous l'avez souligné, les résultats de ces flux peuvent ne pas être imprimés dans la séquence invoquée.
Pour comprendre pourquoi cela se produit, considérez que ces flux utilisent des mécanismes de mise en cache. Lors de l'écriture dans ces flux, les données sont temporairement stockées dans un tampon. Le vidage du tampon déclenche la sortie réelle vers la console. Cependant, le timing des vidages diffère entre System.out et System.err.
En règle générale, les flux de sortie sont vidés périodiquement ou après une période d'inactivité. Ce comportement peut conduire à l'ordre de sortie observé dans lequel les instructions System.out apparaissent consécutivement, suivies par les instructions System.err de la même manière.
Pour résoudre ce problème, vous pouvez explicitement vider les tampons de sortie à l'aide de System.out. .flush() et System.err.flush() dans la boucle. Cela garantit que chaque écriture déclenche un vidage immédiat, produisant la sortie alternative souhaitée de "out" et "err" comme prévu.
Comprendre la mise en cache et le vidage des flux est essentiel pour gérer efficacement la sortie dans les programmes Java, en évitant les comportements inattendus. et assurer une sortie de console fiable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!