Question | Answer |
Was bedeutet "Parallele Ausführungen"? | Parallele Ausführung bedeutet, dass in einem Prozess mehrere Kontrollflüsse existieren, die parallel ausgeführt werden |
Wo werden "Parallele Ausführungen" angewendet? | - Serverseitgies Erbringen von Leistungen, wobei mehrere Clients gleichzeitig bedient werden - Steuerung von Echtzeitautomaten, Robotern - Ausführung von komplexen Abläufen, die in mehrere parallel ausführbare "Subprozesse" zerlegt werden können (Splitting) |
Was ist die Voraussetzung für parallelle Ausführungen? | - das Mehrprozessorsystem und - die Unterstützung durch das Betriebssystem |
Was sind Mehrprozessorsysteme? | Mehrprozessorsyste sind Computer, die zwei oder mehr Prozessoren haben. - sind (waren) teuer und nicht sehr verbreitet - dies ändert sich mit dem Vormarsch von Multicore-Prozessoren |
Was ist ein schwergewichtiger Prozess? | Ein klassischer Prozess (Betriebssystem-Prozess) stellt sowohl für das Memory-Management als auch für Scheduling eine Einheit dar und wird als ein schwergewichtiger Prozess bezeichnet |
Was ist der Vorteil von Threads gegenüber Prozessen? | - in einem Prozess können mehrere Threads laufen - der Kontextwechsel eines Threads ist weniger aufwendig, da nicht alles ausgelagert werden muss |
Was ist ein leichtgewichtiger Prozess? | Ein Thread wird auch als leichtgewichtiger Prozess bezeichnet |
Was braucht ein neuer Thread? | - einen eigenen Stack (lokale Variablen, Rücksprungadressen) - einen eigenen Befehlszeiger (Instruction-Pointer) - einen eigenen Stackzeiger (Stack-Pointer) - einen Satz von Register |
Was sind für alle Threads eines Prozesses gemeinsam? | - Programmcode - Prozessspezifische Daten - Datei-Informationen - "globale" Daten |
Welche fünf Zustände kann ein Thread haben? | 1. neu 2. bereit für die Ausführung 3. in der Ausführung 4. blockiert 5. tot |
Wie können Zustandsänderungen von Threads hervorgerufen werden? | 1. durch entsprechende Methodenaufrufe (z. B. sleep) im Programm und 2. durch das Betriebssystem (in Java JVM) |
Was bedeutet der Zustand "neu" bei einem Thread? | - dass der Thread durch den new-Operator erzeugt wurde und sich in seinemAnfangszustand befindet - der Thread ist noch nicht lauffähig - seine Datenfelder und Methoden können angesprochen werden |
Was bedeutet der Zustand "tot" bei einem Thread? | - dass der Thread seine Arbeit erledigt hat - seine Datenfelder und Methoden können angesprochen werden, ausser die Methode run - Ein Thread, welcher sich im Zustand tot befindet, kann nicht erneut gestartet werden (es wird eine Ausnahme geworfen) |
Threads - Wie sehen die Zustandsübergänge als Folge von Methodenaufrufen aus? | |
Threads - Wie sehen Zustandsübergänge hervorgerufen durch VM aus? | |
Welche Klasse und welches Interface stellt Java i.S. Threads zur Verfügung? | - die Klasse java.lang.Thread und - die Schnittstelle java.lang.Runnable |
Auf welche zwei Arten kann ein Objekt threadfähig gemacht werden? | 1. die generierende Klasse wird von der Klasse Thread abgeleitet, oder 2. die generierende Klasse implementiert die Schnittstelle Runnable |
Wie sieht das direkte Ableiten von der Klasse Thread in UML aus? | |
Wie sieht das direkte Ableiten von der Klasse Thread im Code aus? | |
Wie startet man den Thread bei der direkten Ableitung (Beispiel Uhr)? | |
Wie sieht es in UML aus, wenn die Klasse mit Thread laufen soll? | |
Wie sieht der Code aus bei Threads mit Runnable aus? Die Klasse ZeitHandler | |
Wie sieht der Code aus bei Threads mit Runnable aus? Die Klasse Uhr | |
Wie sieht der Code aus bei Threads mit Runnable aus? Die Mainklasse, um die Applikation zu starten | |
Wie kann ein Thread beendet werden (1. Variante)? | 1. Durch Aufruf der Methode interruptundisInterrupted - der Zustand des Interrupted-Flags wird abgefragt - falls der betroffene Thread gerade am Schlafen ist, wird die Ausnahme InterruptedExceptionausgelöst und kann entsprechend verwertet werden |
Wie kann ein Thread beendet werden (2. Variante)? | 1. Durch Einsatz von privaten Datenfelder - Am Anfang vom Schleifendurchlauf kann der Wert des privaten Feldes geprüft werden - Der Ablauf der Ausführung der Methode runkann entsprechend dem Wert des privaten Feldes gesteuert werden |
Wie sieht der Code aus, wenn durch interrupt einen Thread beendet wird (in der Mainklasse)? | |
Wie sieht der Code aus, wenn durch interrupt einen Thread beendet wird (in der Uhrklasse)? | |
Die Klasse Thread stellt welche Methoden in Bezug auf interrupt zur Verfügung? | |
Was gilt es noch zu beachten? | - Methode interruptsetzt das Interrupted-Flagauf true - Methode isInterruptedliefert den Wert des Interrupted-Flags zurück, ohne ihn zu ändern - Klassenmethode interruptedliefert den Wert des Interrupted-Flags zurück und falls das Flaggesetzt war (true), wird das Flagzurückgesetzt (auf falsegeändert) - Nachdem die Ausnahme InterruptedExceptiongeworfen wurde, wird das Interrupted-Flag anschliessend zurückgesetzt (von trueauf false) |
Wie sieht der Code aus, wenn eine parelle Ausführung mit privaten Feldern gestoppt wird? | |
Was kann passieren, wenn Threads auf eine gemeinsame Resource zugreifen wollen? | Da Zugriff auf gemeinsame Ressourcen nicht koordiniert erfolgt, kann ein Prozess bzw. Thread die inkonsistente Sicht der Daten erhalten (in unserem Beispiel findet Monika die leere Garage vor) |
Was ist ein racecondition? | Falls mehrere Prozesse / Threads auf gemeinsame Ressourcen zugreifen und sie manipulieren, nennt man das racecondition(auf Deutsch: Wettkampfbedingung) |
Was ist ein kritischer Abschnitt? | Der Abschnitt, in dem die gemeinsamen Daten manipuliert werden, wird kritischer Abschnitt genannt |
Wie sieht der Ablauf auf den Zugriff auf eine gemeinsame Resource aus? | |
Welches Synchronisationsmittel wird in Bezug auf den Zugriff von gemeinsamen Resourcen verwendet? | Das Monitorkonzept |
Welches sind die wesentlichen Merkmale eines Monitorkonzeptes? | - Kritische Abschnitte, die auf denselben Daten arbeiten, sind Methoden eines Monitors - Ein Prozess betritt einen Monitor durch Aufruf einer Methode des Monitors |
Mit welchem Schlüsselwort wird das Monitorkonzept in Java umgesetzt? | synchronized |
Was bewirkt das Schlüsselwort synchronized? | - Mit dem Schlüsselwort synchronized kann der wechselseitiger Ausschluss sowohl für Methoden als auch für einzelne Codeblöcke realisiert werden - Falls nötig, kann der Zugriff auf alle Methoden synchronisiert werden (z. B. zugriff auf Collections) |
Wie werden die Monitoren bei Klassenmethoden gebaut? | - Wenn eine oder mehrere Klassenmethoden mit dem Schlüsselwort synchronized versehen werden, wird ein Monitor um diese Methoden "herum gebaut" - Die synchronisierten Klassenmethoden werden dadurch die Methoden des Monitors |
Wie sehen synchronisierte Klassenmethoden im Code aus? | |
Ist es möglich, Codeblöcke in unterschiedlichen Methoden zu synchronisieren? Beweisen Sie es anhand von Code. | |
Was wird für das Synchronisieren eines Codeblockes gebraucht? | Für das Synchronisieren eines Codeblocks wird ein Objekt als Schlüssel benötigt |
Kann ein Schlüssel auf den Zufgriff von mehreren Codeblöcken synchronisiert werden? | Mit einem Schlüssel kann der Zugriff auf mehreren Codeblöcke synchronisiert werden: die Schlüsselbrett-Rolle übernimmt der Monitor |
Welches Objekt eignet sich als Schlüssel? | - Instanz der Klasse Class - Ein übergebenes Schlüssel-Objekt - Die Referenz auf das aktuelle Objekt (this) - usw. |
Was ist sehr wichtig in Bezug auf den Schlüssel? | Der Schlüssel, der in der Regel von mehreren Instanzen gebraucht wird, darf nur einmal Vorkommen! |
Was ist ein Thread-Pool? | Ein Thread-Pool hält eine Anzahl von erzeugten und bereits gestarteten Threads bereit, um mit denen anfallende Arbeiten (aufgaben) asynchron zu erledigen |
Was sind die Vorteile von Thread-Pools? | - Weniger Overhead beim Erstellen, Starten und Beende n der Threads - Aufgaben werden in eine Warteschlange eingereiht und nicht direkt auf Threads abgebildet: sie werden dem Thread-Pool übergeben, der sie einem freien Thread zuweist - Durch passende Konfiguration kann die Skalierbarkeit des Systems optimiert werden, da die Anzahl Threads dynamisch angepasst werden kann - Ergebnisse werden einer Warteschlange hinzugefügt u nd können abgeholt werden |
Was ist ein Executor Framework? | Das Framework stellt mit der Klasse Executorseine Helper-Klasse zur Verfügung, mit der die Arbeit mit dem Executor-Framework vereinfacht wird: - Erstellen von diversen Thread-Pools - Erstellen von ThreadFactoryInstanzen - Erstellen und holen von Callableetc. |
Wie sieht der Aufbau eines Executor Framework aus? | |
Wie sieht ein Executor Framework und Thread-Pools im Code aus (PrimeFactoryPrinter Klasse)? | |
Wie sieht ein Executor Framework und Thread-Pools im Code aus (Main Klasse)? | |
Was ist Callable? | - Wenn das Executor-Objekt nach der Ausführung eines Tasks ein Resultat zurückliefern sollte, kann anstatt Runnableder Typ Callable benutzt werden: Runnable-Methode runist vom Typ voidund liefert keinen verwertbaren Wert zurück - Ein Callable-Objekt arbeitet mit generischen Typen und erlaubt die Rückgabe der Resultats nachdem die Ausführung beendet wurde |
Was ist ein Future? | - Wenn einem Executor-Objekt ein Callable-Objekt übergeben wird, liefert das Framework das Objekt vom Typ Future zurück - Das Future-Objekt ermöglicht die Abfrage des Task-Zustande |
Wie sieht die Schnittstelle Callable im Code aus? | |
Wie sieht die Schnittstelle Future im Code aus? | |
Wie sieht ein Callable und Future im Code aus (PrimeFactoryPrinter Klasse)? | |
Wie sieht ein Callable und Future im Code aus (Main Klasse)? | |
Wie sieht ein Callable und Future im Code aus (weiteres Beispiel)? | |
Wann ist der Threadpool eine gute Lösung? | Der Threadpool ist eine gute Lösung in Applikationen, in denen eine grosse Anzahl von kurzlebigen und voneinander unabhängigen Aufgaben erledigt werden müssen |
Was ist ein typischer Anwendungsfall von Threadpool? | Typischer Anwendungsfall stellt der Server dar, bei dem jede Clientanfrage von einem Pool-Thread abgearbeitet wird |
Wann ist der Threadpool keine gute Lösung? | Der Threadpool ist keine gute Lösung in Applikationen, in denen eine kleine Anzahl aufwändiger und voneinander abhängigen Aufgabe erledigt werden müssen |
Want to create your own Flashcards for free with GoConqr? Learn more.