请看这个类,静态方法调用和输出。
public class OneThreadManyStaticCalls {
public static final Calculator calculator = new Calculator();
public static void main(String[] args) {
dummy(0, 1, 1);
dummy(0, 2, 2);
dummy(0, 3, 5);
dummy(0, 4, 44);
dummy(0, 5, 5);
}
public static void dummy(int a, int b, int expected) {
System.out.print(System.currentTimeMillis() + "\t");
if (calculator.add(a, b) == expected) {
System.out.println("OK");
} else {
System.err.println("NOK");
}
}
}
我在运行这个程序时得到了不同的(来自 System.out.print 的命令)输出。示例:
NOK
NOK
1342527389506 OK
1342527389506 OK
1342527389506 1342527389506 1342527389506 OK
你们中的任何人都可以向我解释(详细说明)原因吗? 提前致谢。 祖国
最佳答案
System.err 和 System.out 是两个不同的流,它们在您的控制台窗口中交错 - 它们不一定同步。 尝试使用 (没关系,这似乎不起作用)强制处理输出,或者将所有输出打印到相同的流。System.*.flush()
public static void dummy(int a, int b, int expected) {
System.out.print(System.currentTimeMillis() + "\t");
if ((a + b) == expected) { // I don't have your Calculator :<
System.out.println("OK");
} else {
System.out.println("NOK");
}
}
给出这个结果
1342528255764 OK
1342528255764 OK
1342528255764 NOK
1342528255764 NOK
1342528255764 OK
关于java - 在单线程中多次调用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11522417/