控制台输出多行数据为何乱序了

控制台输出多行数据为什么乱序了?
这是代码:

package com.mingrisoft;

public class PrintErrorAndDebug {

public static void main(String[] args) {
// TODO 自动生成的方法存根
     System.out.println("main()方法开始运行了。");
     System.err.println("在运行期间手动输出一个错误信息:");
     System.err.println("\t 该软件没有买保险,请注意安全");
     System.out.println("PrintErrorAndDebug.main()");
     System.out.println("main()方法运行结束");
}
}


这是结果:(每运行一次结果顺序都不一样)

main()方法开始运行了。
PrintErrorAndDebug.main()
main()方法运行结束
在运行期间手动输出一个错误信息:
 该软件没有买保险,请注意安全


再运行一次:

main()方法开始运行了。
在运行期间手动输出一个错误信息:
 该软件没有买保险,请注意安全
PrintErrorAndDebug.main()
main()方法运行结束


求高手解答。
------解决方案--------------------
学习了 
标准输出和标准出错的一个区别是,标准输出往往是带缓存的,而标准出错没有缓存(默认设置,可以改)。所以如果你用标准出错打印出来的东西可以马上显示在屏幕,而标准输出打印出来的东西可能要再积累几个字符才能一起打印出来。如果你在应用中混用标准输出和标准出错就可能看到这个问题。

System.err与System.out区别 查看10楼回复