


Out-of-Order-Ausgabe von System.out.println und System.err.println
In Java System.out.println () schreibt in den Standardausgabestream, während System.err.println() in den Standardfehlerstream schreibt. Normalerweise werden diese Streams nacheinander auf der Konsole ausgegeben. Unter bestimmten Umständen ist dieses Verhalten jedoch möglicherweise nicht konsistent.
Bedenken Sie den folgenden Codeausschnitt:
public static void main(String[] args) { for (int i = 0; i <p>Wenn Sie dieses Programm ausführen, erzeugt es die folgende Ausgabe:</p><pre class="brush:php;toolbar:false">out out out out out err err err err err
Anstatt zwischen „out“ und „err“ zu wechseln, zeigt die Ausgabe alle „out“-Meldungen gefolgt von allen „err“-Meldungen an. Diese Diskrepanz erklärt sich durch die unterschiedliche Beschaffenheit der Standardausgabe- und Fehlerströme.
Ausgabeströme in Java werden zwischengespeichert, was bedeutet, dass Daten nicht sofort in die Konsole geschrieben werden. Stattdessen wird es in einem internen Puffer gespeichert und regelmäßig geleert. Der Löschvorgang wird durch verschiedene Kriterien ausgelöst, beispielsweise durch einen bestimmten Zeitraum der Inaktivität oder das Erreichen einer bestimmten Größe des Puffers.
Im Fall des obigen Codeausschnitts schreiben sowohl die Standardausgabe als auch die Fehlerströme in ihre jeweiligen Puffer. Da die Schreibvorgänge nicht synchronisiert sind, ist es möglich, dass der Puffer des Fehlerstroms zuerst voll wird und geleert wird, obwohl einige „Out“-Nachrichten noch im Puffer des Ausgabestroms verbleiben. Dies führt zu der beobachteten Ausgabe außerhalb der Reihenfolge.
Um dieses Problem zu beheben, können Sie sicherstellen, dass beide Ausgabestreams nach jedem Schreibvorgang geleert werden. Der folgende Code enthält Aufrufe von System.out.flush() und System.err.flush() innerhalb der Schleife:
public static void main(String[] args) { for (int i = 0; i <p>Mit dieser Änderung wird die Ausgabe in der erwarteten abwechselnden Reihenfolge gedruckt:</p><pre class="brush:php;toolbar:false">out err out err out err out err out err
Das obige ist der detaillierte Inhalt vonWarum erzeugen „System.out.println' und „System.err.println' in Java manchmal eine Ausgabe außerhalb der Reihenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Es gibt subtile Unterschiede in der Leistung von Java in verschiedenen Betriebssystemen. 1) Die JVM -Implementierungen sind unterschiedlich, z. B. Hotspot und OpenJDK, die die Leistung und die Müllsammlung beeinflussen. 2) Die Dateisystemstruktur und das Pfadabscheider sind unterschiedlich, daher muss sie mit der Java -Standardbibliothek verarbeitet werden. 3) Die unterschiedliche Implementierung von Netzwerkprotokollen beeinflusst die Netzwerkleistung. 4) Das Aussehen und das Verhalten von GUI -Komponenten variieren in verschiedenen Systemen. Durch die Verwendung von Standardbibliotheken und virtuellen Maschinentests können die Auswirkungen dieser Unterschiede reduziert werden und Java -Programme können reibungslos ausgeführt werden.

JavaoffersrobustObject-orientedProgramming (OOP) und Top-NeotchSecurityFeatures.1) Oopinjavaincludesclasses, Objekte, Erbschaft, Polymorphismus und Incapsulation, EnablingflexiBleanDmaintainables.2) Sicherheitsfassungen

JavaScriptandJavahavedistinctstrengths:JavaScriptexcelsindynamictypingandasynchronousprogramming,whileJavaisrobustwithstrongOOPandtyping.1)JavaScript'sdynamicnatureallowsforrapiddevelopmentandprototyping,withasync/awaitfornon-blockingI/O.2)Java'sOOPf

JavaachievsplattformindependencethroughthejavavirtualMachine (JVM) und ByteCode.1) thejvMinterpretsBytecode, zuzulassen theSameCodetorunonanyplatformWitHitHitijvm.2) BytecodeCompiledFromjavaSourcedeDiseDiSpleTiNeTiSpleTiseDiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiStiform

Java'splattformIndependencemeansapplicationscanrunonanyplatformwithajvm, ermöglicht "writeonce, runanywhere".

JVM'SPERFORMANCEISCORTITITIONWITHOTHOTHERRUNTIMEN, OPFORMENTABALANCEFEED, Sicherheit und Produktivität.1) JVmusesjitCompilationfordynamicoptimierungen.2)

JavaachievsplattformIndependencethroughthejavavirtualMachine (JVM), Zulassung von CodetorunonanyPlatformWithajvm.1) codiscompiledIntobytecode, NotMachine-spezifischCode.2) bytecodeIsinterpreted bythejvm, ermöglicht, zu ermöglichen

ThejvmisanabstractComputingMachinecrucialForrunningjavaprogramsduToitSplatform-unabhängige Architektur.itincludes: 1) ClassloaderforFoLoading-Klassen, 2) Runtimedataardeatastorage, 3) ExeclectueNeginewitherdinterpreter, Jitcompiler, undgarbaglector


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen
