Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » pfp » Aufgabe 1 (Übersicht)
Dies ist eine alte Version des Dokuments!
Aufgabe 1
a) 1 und 4
b) 2 und 4 (???) (einerseits bessere Lastverteilung, andererseits mehr Overhead / Synchronisationsaufwand)
c) 2 und 3 (siehe Seite 26 VL Folie: https://www2.cs.fau.de/teaching/SS2016/PFP/slides/secure/pfp-08.pdf )
Aufgabe 2
a)
AtomicInteger activeThreads = new AtomicInteger(0);
b)
boolean manageThreads(String linkUrl) { if (curThreads.incrementAndget() <= maxThreads) { CrawlThread t = new CrawlThread(linkUrl); t.start(); } else { curThreads.decrementAndGet(); return false; } } // END OF manageThreads
c)
public void run() { process(); curThreads.decrementAndGet(); }
d)
synchronized(visitedUrls) { if(!visitedUrls.contains(linkUrl)){ doVisit = true; visitedUrls.add(linkUrl); } }
Aufgabe 4
a) 3
Nein ist nicht möglich, s wird bereits mit anderen Werten belegt bevor das Programm parallel ausgeführt wird. Die Sichtbarkeit der in Zeile 25 festgelegten Werte ist gewährleistet.
b) 3
Ja, „Geralt“ ist eine mögliche Ausgabe. Die Sichtbarkeit der Veränderungen der Threads ist nicht garantiert.
c) 4
Nein, da die Threads wieder gejoint wurden. Das Programm ist somit nicht mehr parallel. Die Sichtbarkeit ist im (einzigen) Thread gewährleistet.