Process p = Runtime.getRuntime().exec(commands); 能阻塞,但是打印信息是分开普通信息缓冲区和错误信息缓冲区的,2者分开后,就体现不了顺序关系了,比如第一行错误信息,是在哪个普通信息之后打印的,第二行错误信息是在第几行普通信息之后打印的之类。
如果使用 > xx.log的方式,可以得到顺序正确的打印文件,但是就不能用java.lang.Process来阻塞了,会直接往下跑代码,不会阻塞的。
我想要得到按时间顺序正确的完整的打印信息,并且能阻塞,有什么办法呢?
------解决思路----------------------
你分别将普通信息和错误信息通过一个单例的同步接口输出不就好了,不过你所谓的前后并不一定准确。
信息输出的时候本身可能就是多个线程中输出的,可能并不一定存在绝对的先后顺序。