Java的使用NetBeans 7.2.1 - 执行顺序问题

问题描述 投票:-1回答:1

考虑一个NetBeans Java应用以下两类。主类:

public class ExcecutionOrder {
    public static void main(String[] args) {

        Worker worker = new Worker();

        worker.init();
        worker.doProcessing();
        worker.stop();
    }
}

和工人阶级是这样的:

public class Worker {

    public void init() {
        System.out.println("\n-------------------------------------------------");
        System.out.println("Worker initialized.");
        System.out.println("-------------------------------------------------\n");
    }

    public void doProcessing() {
        printNTimes(2000);
    }

    public void doProcess(int n) {
        printNTimes(n);
    }

    public void printNTimes(int n) {
        System.out.println();
        for (int i = 0; i < n; i++) {
            System.err.println("Output by Worker: " + i);
        }
        System.out.println();
    }

    public void stop() {

        System.out.println("\n-------------------------------------------------");
        System.out.println("Worker stopped.");
        System.out.println("-------------------------------------------------\n");
    }
}

奇怪的是,输出结果的顺序如下:

Output from Worker: 0
-------------------------------------------------
Output from Worker: 1
Worker initialized.
Output from Worker: 2
-------------------------------------------------
Output from Worker: 3
[...]

它应该是:

-------------------------------------------------
Worker initialized.
-------------------------------------------------
Output from Worker: 0
Output from Worker: 1
Output from Worker: 3
[...]

如果设置的netbeans的处理器亲和性只使用一个CPU核心,那么至少初始部分是细而另一个控制研究消息(工人停止。)仍是零散RESP。通过输出消息的干扰。

否则使用Eclipse导致预期的执行顺序是一样的。

有没有人一个想法,这里发生了什么? - 非常感谢任何建议提前!

PS:的NetBeans 7.2.1使用jdk1.7.0_03,Eclipse版本是Mars.2推出(4.5.2) - 甚至从工人类到主类的主要方法,而无需使用其它方法移动代码时出现的问题比的主要方法都没有。

java order-of-execution io-buffering
1个回答
1
投票

您正在使用System.outWorker initializedSystem.errOutput by Worker...

System.outSystem.err是不同的输出流,它们在不同的时间冲洗,因此输出是不按顺序对控制台。

使用System.out.println()您的所有输出线,所有的输出将是所期待的顺序。

© www.soinside.com 2019 - 2024. All rights reserved.