Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » pfp » Aufgabe 1 (Wissensfragen) (Übersicht)
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
pruefungen:bachelor:pfp:loesungws12 [22.07.2016 17:31] – Code-Formatierung u.a. Marcel[Inf] | pruefungen:bachelor:pfp:loesungws12 [01.08.2017 19:45] (aktuell) – ab21ajus | ||
---|---|---|---|
Zeile 74: | Zeile 74: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ==== Aufgabe 4 (Schreibtischlauf - Barrieren) ==== | ||
+ | |||
+ | * a) a = 1, weil sowohl a++ als auch die System.out.println-Ausgabe in einem synchronized-Block stehen und beide Threads auf dieselbe Marke synchronisieren. | ||
+ | * b) Mögliche Ausgaben sind: | ||
+ | |||
+ | < | ||
+ | a=1 | ||
+ | a=2 | ||
+ | a=3 | ||
+ | Threads 1, 2, 3 started. | ||
+ | </ | ||
+ | |||
+ | Und | ||
+ | |||
+ | < | ||
+ | a=1 | ||
+ | a=2 | ||
+ | Threads 1, 2, 3 started. | ||
+ | a=3 | ||
+ | </ | ||
+ | |||
+ | Der Main-Thread synchronisiert nicht auf irgendeine Marke (insb. nicht auf BarrierTest.class), | ||
+ | |||
+ | * c) 1, 2, 3, oder 4 Mal. Jeder Thread könnte gleichzeitig b=0 am Anfang feststellen oder erst prüfen, nachdem die anderen Threads (oder ein Teil davon) das IF verlassen. | ||
+ | * d) Vorletzte oder letzte Zeile. Der CountDownLatch ist nur mit 3 initialisiert worden. Daher kann sich der letzte Thread irgendwo zwischen barrier.await() und latch.countDown() befinden. | ||
Zeile 107: | Zeile 133: | ||
helper(m,0) | helper(m,0) | ||
} | } | ||
- | + | ||
+ | // | ||
+ | def sortRows2: Matrix => Matrix = m => m match { | ||
+ | case Nil => Nil | ||
+ | case (row:: | ||
+ | sortAsc(row):: | ||
+ | else | ||
+ | sortDes(row):: | ||
+ | } | ||
+ | |||
def sortHelper: (Int, Matrix) => Stream[(Matrix, | def sortHelper: (Int, Matrix) => Stream[(Matrix, | ||
case (n,m) => if (n%2==0) (m, sortRows(m)) #:: | case (n,m) => if (n%2==0) (m, sortRows(m)) #:: |