我正在准备SCJP,多线程一直是我最讨厌的领域,主要是因为我不知道如何查看多线程代码并完成它.到目前为止,我的方法是用英语写下每个线程中可能发生的事情,并测试一些线程随机相互交叉的情况,这是一个非常重要且耗时且耗时的方法.所以我想看看专业人士会怎么做.你是否愿意阅读下面的代码(这是给我带来麻烦的最新问题)并记下你脑子里的内容(只有代码相关的东西,请:),当你计算出可能的输出时?问题附带的选择是最终的.我正在寻找的不是我所拥有的解决方案,而是如何在考试中有效地达到解决方案.
是的,我知道这个问题没有一个确切的答案等等.接受投票的答案最明确,最容易模仿,好吧:)
感谢大家!
问题:这些答案中哪一个是可能的输出?
public class Threads1 {
int x = 0;
class Runner implements Runnable {
public void run() {
int current = 0;
for (int i = 0; i < 4; i++) {
current = x;
System.out.print(current + ", ");
x = current + 2;
}
}
}
public static void main(String[] args) {
new Threads1().go();
}
public void go() {
Runnable r1 = new Runner();
new Thread(r1).start();
new Thread(r1).start();
}
}
Run Code Online (Sandbox Code Playgroud)
选择(选择所有适用的选项):
A. 0,2,4,4,6,8,10,6,
B. 0,2,4,6,8,10,2,4,
C. …