【发布时间】:2026-01-18 06:05:02
【问题描述】:
对于以下程序,在 eclipse 上运行和调试时会出现不同的输出。
public class MyClass implements Runnable {
public static void main (String[] args) throws Exception {
Thread t = new Thread(new MyClass());
t.start();
System.out.print("Started");
t.join();
System.out.print("Complete");
}
public void run() {
for (int i = 0; i < 4; i++) {
System.out.print(i);
}
}
}
当作为 java 应用程序运行时,OUTPUT 是
Started0123Complete
签入时调试模式OUTPUT为
0123StartedComplete
有人可以帮忙吗?是因为两个线程吗? main thread 和以t.start() 开头的线程。如果是,那么为什么主线程执行优先级更高?
谢谢
【问题讨论】:
-
无法保证它将如何在调试/常规模式下运行。如果您在每种模式下多次运行它,您会注意到不同的输出。
-
我确实尝试了 5,6 次相同的输出。
-
5 或 6 次没什么,在一个循环中运行 1000 多次,你最终会看到不同的输出
-
机会:我现在在 1000+ 循环中,但看不出有什么不同
-
硬件、您的 java 配置、您的操作系统配置有很多变量,您可能只看到
Integer.MAX_VALUE次中的 1 次之间的差异。对于其他配置,它可能是每 100 次中的 1 次。答案应该澄清为什么会这样。
标签: java eclipse multithreading main