Ich bin bereit für die SCJP, und Multithreading war meine am meisten wackeligen Bereich, vor allem, weil ich nicht weiß, wie man Multithreading-Code betrachten und durch sie gehen. Bis jetzt war mein Ansatz, auf Englisch aufzuschreiben, was in jedem Thread passieren könnte, und einige Fälle mit Threads zu testen, die sich zufällig überschneiden, was ein wirklich hit-and-miss und zeitraubender Ansatz ist. Also würde ich gerne sehen, wie ein Profi das machen würde. Würdest du bereit sein, den Code unten zu lesen (es ist die letzte Frage, die mir Probleme macht) und aufzuschreiben, was durch deinen Kopf geht (bitte nur Code-bezogenes Zeug :), während du die möglichen Ausgaben ausarbeitest? Die Entscheidungen, die mit der Frage kommen, sind am Ende. Was ich suche, ist nicht die Lösung, die ich habe, sondern wie man effizient zur Lösung auf die Prüfung kommt.Wie denkst du über die Ergebnisse einer Threading-Frage nach?
Und ja, ich weiß, diese Frage keine genaue Antwort hat, etc etc. Accepted Stimme geht an die Antwort, die klarste und einfachste ist zu emulieren, okay :)
Danke an alle!
Frage: Welche dieser Antworten sind mögliche Ergebnisse?
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();
}
}
Auswahl (Auswahl all zutreffenden):
A. 0, 2, 4, 4, 6, 8, 10, 6,
B. 0, 2, 4, 6 , 8, 10, 2, 4,
C. 0, 2, 4, 6, 8, 10, 12, 14,
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,
Also was ist die Antwort Anita? Ich würde gerne deine Antwort sehen, bevor ich dir meine Denkweise über das Problem gebe. – Gray
Visualisierung ist der Schlüssel, machen Sie Ihre eigene Diagrammtechnik, genug um zu zeigen, was gleichzeitig passiert und welche Ressourcen zwischen den einzelnen Threads geteilt werden. –
Ich habe die Antwort nicht gegeben, weil das zu einfach wäre :) Ehrlich gesagt, wenn ich die Antwort kenne, kann ich erklären, warum es richtig ist, aber es wird herausgefunden, was es überhaupt ist und was ich tun muss kann noch nicht tun. –