Schönen Guten Abend,
ich befinde mich gerade in der Prüfungsvorbereitung und mir wird dieser Abschnitt einfach nicht klar. Ich hoffe der Thread verstößt damit nicht gegen die Bordregeln ("Lösung von Übungen"). Ich brauche hoffentlich nur ein paar Denkanstöße.
Ich habe versucht mich durch "Java ist auch eine Insel" in das Thema einzulesen, jedoch gestaltet sich das ganze als ziemlich komplex und verwirrend.
Ich würde einfach mal das Beispiel liefern und meine Gedanken dazu äußern
}
Erfolgt die Abarbeitung parallel oder nacheinander, wenn
Stimmt es soweit?
Ich bin mir sehr unsicher und nehme gerne jede Hilfe an. Erklärende Links natürlich auch gerne gesehen.
ich befinde mich gerade in der Prüfungsvorbereitung und mir wird dieser Abschnitt einfach nicht klar. Ich hoffe der Thread verstößt damit nicht gegen die Bordregeln ("Lösung von Übungen"). Ich brauche hoffentlich nur ein paar Denkanstöße.
Ich habe versucht mich durch "Java ist auch eine Insel" in das Thema einzulesen, jedoch gestaltet sich das ganze als ziemlich komplex und verwirrend.
Ich würde einfach mal das Beispiel liefern und meine Gedanken dazu äußern
Code:
class MyCalculator {
static MyCalculator m1 = new MyCalculator();
static MyCalculator m2 = new MyCalculator();
static String st = new String("statische Variable!");
String ob1 = new String("Objektvariable!");
String ob2 = new String("Objektvariable 2!");
MyCalculator(){ ob2 = st; }
synchronized void calc1() { /* lange Rechnung */ }
void calc2() {
synchronized (this) { /* lange Rechnung */ }
}
void calc3() {
synchronized (st) { /* lange Rechnung */ }
}
void calc4() {
synchronized (ob1) { /* lange Rechnung */ }
}
void calc5() {
synchronized (ob2) { /* lange Rechnung */ }
}
Erfolgt die Abarbeitung parallel oder nacheinander, wenn
- Thread-1 m1.calc1() und Thread-2 m2.calc1() ruft?
Parallel,da unterschiedliche Objekte - Thread-1 m1.calc2() und Thread-2 m2.calc2() ruft?
Parallel,da unterschiedliche Objekte - Thread-1 m1.calc3() und Thread-2 m2.calc3() ruft?
Ich denke hier ist der Fall klar: Sobald eine static Variable im Spiel ist, kann die Bearbeitung nur nacheinander erfolgen. - Thread-1 m1.calc4() und Thread-2 m2.calc4() ruft?
Parallel, weil ... - Thread-1 m1.calc5() und Thread-2 m2.calc5() ruft?
Durch den Fallstrick im Konstruktor (obj2 = st) ist die Variable wieder stätig, also nacheinander
- Thread-1 m1.calc1() und Thread-2 m1.calc2() ruft?
keine Ahnung, wirklich... - Thread-1 m1.calc3() und Thread-2 m1.calc5() ruft?
Nacheinander? calc3 ist static und obj2 wird durch Konstruktur zum st und static...?
Stimmt es soweit?
Ich bin mir sehr unsicher und nehme gerne jede Hilfe an. Erklärende Links natürlich auch gerne gesehen.