• Keine Ergebnisse gefunden

Vorlesung Verteilte Systeme Übungsblatt 2

N/A
N/A
Protected

Academic year: 2022

Aktie "Vorlesung Verteilte Systeme Übungsblatt 2"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Vorlesung Verteilte Systeme Übungsblatt 2

Aufgabe 1:

Beschreiben Sie (z.B. mit Pseudocode) die zwei grundsätzlichen Möglichkeiten, wie man in Java Threads erzeugt.

Aufgabe 2:

Welche der folgenden Aussagen sind wahr oder falsch?

a) Der schreibende Zugriff auf Objektattribute einer Klasse von verschiedenen Threads aus ist immer unkritisch.

b) Der schreibende Zugriff auf lokale Variablen einer Klassenmethode von verschiedenen Threads aus ist immer unkritisch.

c) Der schreibende Zugriff auf Klassenattribute (static-Attribute einer Klasse) von verschiedenen Threads aus ist immer kritisch.

d) Wenn ein Thread in einem wait() auf etwas wartet, kann dieser Wartezustand nicht durch Schicken eines „Interrupts“ (per Aufruf der interrupt()-Methode) unterbrochen werden.

e) Der Aufruf von notify() auf einem Datenobjekt, an dem Threads warten, weckt alle wartenden Threads auf.

f) Wenn nur ein Thread schreibend auf eine Resource zugreift und die anderen nur lesen, dann muss der Zugriff nicht synchronisiert werden.

g) Der Aufruf der Methode interrupt() auf einem Threadobjekt wirft eine InterruptedException, wenn dieser Thread auf etwas wartet (z.B. in einem wait()- Aufruf).

h) Der Aufruf der Methode interrupt() auf einem Threadobjekt wirft auch dann eine Interrupted-Exception, wenn der Thread nicht auf etwas wartet.

i) Wenn zwei Threads nacheinander auf verschiedene Objekte als gemeinsame Ressourcen schreibend zugreifen, dann sollten die Objekte von beiden Threads immer in der gleichen Reihenfolge gesperrt werden, um Deadlocks zu vermeiden.

j) Eine Java-Klasse hat zwei mit synchronized verriegelte Methoden m1() und m2(). Man sollte nie Methode m1() in der Methode m2() oder umgekehrt aufrufen, sonst erhält man einen Deadlock.

Aufgabe 3:

Warum sollte man in Java und auch in anderen Sprachen einen Thread nie durch Aufruf einer Art stop()-Methode von einem anderen Thread aus unmittelbar beenden können, bzw.

warum ist diese Methode in Java „deprecated“. Wie sollte man dann Threads beenden?

Aufgabe 4: (Programmieraufgabe)

Erläutern Sie am Beispiel (z.B. das Threadbeispiel aus der Vorlesung), was Nichtdeterminismus einer Verteilten Anwendung ist.

Aufgabe 5: (Programmieraufgabe)

Schreiben Sie den Serverteil der Wetteranwendung so um, dass er einen Threadpool von Threads zur Verarbeitung der empfangenen Datenpakete auf der Serverseite verwendet.

Verwenden sie hierfür den ExecutorService des java.util.concurrent-Paketes.

Referenzen

ÄHNLICHE DOKUMENTE

a) Das UDP-Protokoll ist ein verbindungsorientiertes Protokoll. b) Die Java Socket-Klasse nutzt TCP als Übertragungsprotokoll. c) Bei der UDP-Übertragung werden keine

a) Das UDP-Protokoll ist ein verbindungsorientiertes Protokoll. b) Die Java Socket-Klasse nutzt TCP als Übertragungsprotokoll. c) Bei der UDP-Übertragung werden keine

a) Der schreibende Zugriff auf Objektattribute einer Klasse von verschiedenen Threads aus ist immer unkritisch. b) Der schreibende Zugriff auf lokale Variablen einer

a) Eine Klasse beschreibt ein entferntes Objekt, wenn sie das Serializable-Interface implementiert. b) Die Sprache, über die man entfernte Objektschnittstellen bei

a) Eine Klasse beschreibt ein entferntes Objekt, wenn sie das Serializable-Interface implementiert. b) Die Sprache, über die man entfernte Objektschnittstellen bei

a) Bei einem zustandslosen Session-Bean umschließt beim Default- Transaktionsmechanismus eine Transaktion des Containers alle Methodenaufrufe des Beans, die im Rahmen einer

Bei Microservice- basierten Anwendungen kann jede funktionale Komponente (jeder Service) einzeln bedarfsgerecht horizontal skaliert werden.

• Scanner und Sieber werden i.a. in einer Komponente zusammen gefasst, indem man dem Scanner nach Erkennen eines Tokens gestattet, eine Aktion auszuführen :-). • Scanner werden