【发布时间】:2019-01-28 15:46:51
【问题描述】:
哪两个是可能的结果? (选择两个)
public class Cruiser {
private int a = 0;
public void foo() {
Runnable r = new LittleCruiser();
new Thread(r).start();
new Thread(r).start();
}
public static void main(String arg[]) {
Cruiser c = new Cruiser();
c.foo();
}
public class LittleCruiser implements Runnable {
public void run() {
int current = 0;
for (int i = 0; i < 4; i++) {
current = a;
System.out.print(current + ", ");
a = current + 2;
}
}
}
}
- A) 0、2、4、0、2、4、6、6,
- B) 0、2、4、6、8、10、12、14,
- C) 0、2、4、6、8、10、2、4,
- D) 0、0、2、2、4、4、6、6、8、8、10、10、12、12、14、14,
- E) 0、2、4、6、8、10、12、14、0、2、4、6、8、10、12、14,
正确答案是 A 和 B,但是我不太明白这段代码是如何在较低级别生成 A 的。
【问题讨论】:
-
嗨,Daria - 欢迎来到 Stack Overflow。如果您要展示您已经完成的工作(而不仅仅是询问答案),欢迎在这里提出家庭作业问题。在此处查看帮助中心:stackoverflow.com/help/on-topic
-
顺便说一句,我认为这段代码根本无法产生任何输出,因为它甚至无法编译。公共类 LittleCruiser 需要在自己的源文件中定义。
-
@ErwinSmout Java 允许内部类
-
@ErwinSmout 哦,好吧,尝试在 Intellij Idea 上运行它,你会发现输出 A 和 B 都是可能的 + 更多。
标签: java multithreading synchronization explain