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!


Inhaltsverzeichnis

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.