6 votes

Imprimer la sortie et un message d'erreur à la console

J'essaie d'imprimer une sortie et un message d'erreur sur la console. Mais parfois la séquence de sortie change, d'abord il imprime le message d'erreur et ensuite il imprime le message simple. Quelqu'un peut-il m'aider à comprendre pourquoi cela se passe ainsi ? la séquence de sortie change la plupart du temps. Il n'y a pas de cohérence dans la sortie imprimée. J'utilise l'IDE Eclipse et la sortie que j'obtiens est la suivante.

J'ai essayé d'imprimer le code suivant,

System.out.println("simple message");  
System.err.println("error message");  

le résultat attendu est le suivant :

message simple

message d'erreur

mais le résultat réel est le suivant :

message d'erreur

message simple

0voto

Arpit Shah Points 55
  • N'oubliez pas que cela ne dépend pas seulement de la séquence définie par l'utilisateur, mais aussi de l'application réceptrice.
  • Par exemple, si l'IDE Eclipse a deux threads, l'un pour recevoir le flux d'erreur et l'autre pour recevoir le flux system.out, ces threads ne sont pas sous votre contrôle et vous pouvez donc voir la séquence changer de temps en temps.
  • Si vous ne vous préoccupez pas de la performance, vous pouvez mettre un peu de sommeil entre les deux.

System.out.println("Out");

Thread.sleep(50);

System.err.println("error");

0voto

a lovely person Points 13

Comme Simeon Ikudabo l'a dit la tâche est impossible ! ! mais pour la plus proche essayer ceci

static void print(PrintStream p, Object o) throws InterruptedException {
    Object lock = new Object();
    synchronized (lock) {

        Runnable r = new Runnable() {
            public void run() {
                synchronized (lock)
                {
                p.println(o);
                lock.notify();
                }
            }
        };
        new Thread(r).start();

        lock.wait();
    }

}

public static void main(String[] args) throws InterruptedException {

    for (int i = 0; i < 50; i++) {
        print(System.out, "out");
        print(System.err, "err");

    }}

vous pouvez le voir comme parfait mais il y a quand même une toute petite chance de sortir de la course et ce n'est pas accordé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X