Java Schulung (Java 2 Java Development Kit 5 / 6)
|
|
|
- Dieter Küchler
- vor 9 Jahren
- Abrufe
Transkript
1 4. Threads und nebenläufige Programmierung 4.1 Prozesse und Threads Moderne Betriebssysteme geben Benutzer die Illusion, verschiedene Programm würden gleichzeitig ausgeführt (Multitasking) Tatsächlich jedoch Quasiparallelität durch Scheduler (verzahnte Verarbeitung von Prozessen) Bei Mehrprozessormaschinen tatsächlich parallele Abarbeitung Bei modernen Betriebssystemen gehört zu jedem Prozess mindestens ein Thread (Ausführungsstrang), der Programmcode ausführt In Java auch multithreaded Software möglich, wenn OS keine Threads direkt verwendet (in diesem Fall simuliert JVM die Parallelität) Wie parallele Programme die Geschwindigkeit steigern können Zunächst nicht ersichtlich, wie 1-Prozessor-System durch nebenläufige Abarbeitung beschleunigt werden kann Betrachtet man ein Programm, das eine Folge von Anweisungen ausführt (z.b. Visualisieren eines Datenbank-Reports) Die Schritte sind dann z.b. 1. Baue ein Fenster auf. 2. Öffne die Datenbank vom Netz-Server, und lies die Datensätze. 3. Analysiere die Daten, und visualisiere den Fortschritt. 4. Öffne die Datei, und schreibe den erstellten Report. Auf dem ersten Blick typisches sequenzielles Programm; kann aber durch geschickte Parallelisierung beschleunigt werden Überlegung, welche Schritte gleichzeitig ausgeführt werden können: o Das Öffnen von Fenster, Ausgabedatei und Datenbank kann parallel geschehen. o Das Lesen neuer Datensätze und das Analysieren alter Daten kann gleichzeitig erfolgen. o Alte analysierte Werte können während der neuen Analyse in die Datei geschrieben werden. Parallelisierbare Ressourcen Wenn Operationen tatsächlich parallel durchgeführt, enormer Leistungszuwachs zu verzeichnen (bei 1-Prozessor-Systemen) Bei den gleichzeitig auszuführenden Aufgaben handelt es sich um unterschiedliche Ressourcen Wenn die grafische Oberfläche das Fenster aufbaut, braucht sie dazu Rechenzeit, parallel kann Datei geöffnet werden, wobei weniger Prozessorleistung gefragt ist, da die vergleichsweise träge Festplatte angesprochen wird Öffnen der Datenbank wird auf den Datenbank-Server im Netzwerk abgewälzt (Geschwindigkeit hängt von der Belastung des Servers und des Netzes ab) Wenn anschließend Daten gelesen werden, muss Verbindung zum Datenbank-Server natürlich stehen. Daher sollte man zuerst die Verbindung aufbauen Marcel Wieczorek S e i t e
2 In diesem Beispiel ist durch hohe Parallelisierung Leistungssteigerung möglich, da die bei langsamen Operationen anfallenden Wartezeiten genutzt werden können Ressource Belastung Hauptspeicherzugriffe Dateioperationen Prozessor Festplatte Datenbankzugriff Nebenläufigkeit muss gut geplant werden Server, Netzwerkverbindung Nur wenn verzahnte Aktivitäten unterschiedliche Ressourcen verwenden, resultiert daraus auf Einprozessorsystemen ein Geschwindigkeitsvorteil 4.2 Threads erzeugen Threads über die Schnittstelle Runnable implementieren Damit Thread weiß, was er ausführen soll, muss man ihm Anweisungsfolgen geben (diese werden in einem Befehlsobjekt vom Typ Runnable verpackt und dem Thread übergeben) Wird der Thread gestartet, arbeitet er die Programmzeilen aus dem Befehlsobjekt parallel zum restlichen Programmcode ab Die Schnittstelle Runnable ist schmal und schreibt nur eine run()-methode vor Beispiel: zwei Threads, wobei einer zwanzigmal das aktuelle Datum und die Uhrzeit ausgibt und der andere einfach eine Zahl Beispiel: CounterCommand.java package de.assona.threads.first; /** mwieczorek */ class CounterCommand implements Runnable { for (int i = 0; i < 20; i++) System.out.println(i); Threads über Runnable starten Um Thread nun als solchen zu starten, reicht es nicht aus, run()-methode aufzurufen Würden man dies tun, wäre nichts nebenläufig, sondern man würde einfach eine Methode sequenziell ausführen Damit Programmcode parallel zur Applikation läuft, muss man Thread-Objekt mit dem Runnable verbinden und dann den Thread explizit starten Dazu wird Konstruktor der Klasse Thread Referenz auf das Runnable-Objekt übergeben und start() aufgerufen Nachdem start() für den Thread eine Ablaufumgebung geschaffen hat, ruft es intern selbstständig die Methode run() genau einmal auf Läuft der Thread schon, löst zweiter Aufruf der start()-methode IllegalThreadStateException aus Marcel Wieczorek S e i t e
3 Beispiel: FirstThread.java public static void main(string[] args) { Thread t1 = new Thread(new DateCommand()); t1.start(); Thread t2 = new Thread(new CounterCommand()); t2.start(); Beispiel-Ausgabe: Tue Jun 1010:53:47 CEST Tue Jun 1010:53:47 CEST Verzahnung beider Threads deutlich zu erkennen Kommt durch unterschiedliche Laufzeiten zustande, die für Datums- und Zeitausgabe notwendig sind Die Klasse Thread erweitern Klasse Thread implementiert selbst das Interface Runnable und implementiert die run()- Methode mit leerem Programmcode Will man eigene parallele Aktivitäten programmieren, kann man auch die Klasse Thread erweitern Beispiel: DateThread.java public class DateThread extends Thread { for (int i = 0; i < 20; i++) System.out.println(new java.util.date()); Aufruf DateThread dt = new DateThread(); dt.start(); // new DateThread().start(); Konstruktor muss kein Runnable-Exemplar mehr übergeben werden (es genügt der Aufruf der Methode start()) Marcel Wieczorek S e i t e
4 Erweitern von Thread oder Implementieren von Runnable? Vorteil Nachteil Ableiten von Thread (extends Thread) Programmcode in run() kann die Methoden der Klasse Thread nutzen. Da es in Java keine Mehrfachvererbung gibt, kann die Klasse nur von Thread erben. Implementieren von Runnable (implements Runnable) Klasse kann von anderer problemspezifischer Klasse erben. Kann sich nur mit Umwegen selbst starten (Threadmethoden nur über Umwege nutzbar) Beste Idee wäre, Runnable-Objekte zu bauen, die dann dem Thread übergeben werden Befehlsobjekte dieser Art sind recht flexibel, da die einfachen Runnable-Objekte leicht übergeben und sogar von Threads aus einem Thread-Pool ausgeführt werden können 4.3 Die Zustände eines Threads Bei Thread-Exemplar gibt es verschiedene Zustände festzustellen Zustand Nicht erzeugt Laufend Wartend Beendet Erläuterung Lebenslauf eines Thread-Objekts beginnt mit new, doch befindet er sich damit noch nicht im Zustand ausführend Durch start() gelangt Thread in den Zustand»ausführbar«beziehungsweise»laufend«; Zustand kann sich ändern, wenn anderer Thread zur Ausführung gelangt und dann dem aktuellen Thread den Prozessor entzieht (vormals laufender Thread kommt in den Zustand nicht laufend, bis der Scheduler ihm wieder Rechenzeit zuordnet) Zustand wird mittels spezieller Synchronisationstechniken oder Ein- /Ausgabefunktionen erreicht Thread verweilt in einem Wartezustand Nachdem die Aktivität des Thread-Objekts beendet wurde, kann es nicht mehr aktiviert werden und ist tot, also beendet Zustand über Thread.State Zustand des Threads zeigt die Methode getstate() (liefert Objekt vom Typ der Aufzählung Thread.State) NEW RUNNABLE BLOCKED WAITING Neuer Thread, noch nicht gestartet Läuft in der JVM Wartet auf einen MonitorLock, wenn er etwa einen synchronized Block betreten möchte Wartet etwa auf ein notify() TIMED_WAITING Wartet etwa in einem sleep() TERMINATED Ausführung beendet Marcel Wieczorek S e i t e
5 Das Ende eines Threads Es gibt Threads, die dauernd laufen, weil sie zum Beispiel Server-Funktionen implementieren Andere führen einmalig eine Operation aus und sind danach beendet Allgemein ist ein Thread beendet, wenn eine der folgenden Bedingungen zutrifft o Die run()-methode wurde ohne Fehler beendet (Endlosschleife würde potenziell nie endenden Thread bilden) o In der run()-methode tritt eine RuntimeException auf, die die Methode beendet (beendet weder die anderen Threads noch die JVM als Ganzes) o Der Thread wurde von außen abgebrochen (dazu dient problematische Methode stop(), von deren Verwendung abgeraten wird und die auch veraltet ist) o Die virtuelle Maschine wird beendet und nimmt alle Threads mit ins Grab Einen Thread mit interrupt() beenden Enthält run()-methode Endlosschleife (z.b. Serveranwendung), muss Thread von außen zur Kapitulation gezwungen werden Man bittet ihn, seine Arbeit aufzugeben (Thread lauscht periodisch, ob jemand von Außen Abbruchwunsch geäußert hat) Die Methoden interrupt() und isinterrupted() Methode interrupt() setzt von außen in einem Thread-Objekt ein internes Flag, das dann in der run()-methode durch isinterrupted() periodisch abgefragt werden kann Folgendes Programm soll jede halbe Sekunde eine Meldung auf dem Bildschirm ausgeben Nach zwei Sekunden wird der Unterbrechungswunsch mit interrupt() gemeldet Auf dieses Signal achtet die sonst unendlich laufende Schleife und bricht ab Beispiel: ThreadusInterruptus.java public static void main(string[] args) throws InterruptedException { ThreadusInterruptus ti = new ThreadusInterruptus(); ti.start(); Thread.sleep(2000); ti.interrupt(); System.out.println("Es gibt ein Leben vor dem Tod. "); while (!isinterrupted()) { System.out.println("Und er läuft und er läuft und er läuft"); try { Thread.sleep(500); catch (InterruptedException e) { interrupt(); System.out.println("Unterbrechung in sleep()"); System.out.println("Das Ende"); Marcel Wieczorek S e i t e
6 run()-methode im Thread so implementiert, dass Schleife genau dann verlassen wird, wenn isinterrupted() den Wert true ergibt, also von außen die interrupt()-methode für dieses Thread-Exemplar aufgerufen wurde Genau dies geschieht in der main()-methode Stünde interrupt() im catch-block nicht, würde vermutlich nicht funktionieren Wenn Ausgabe nur jede halbe Sekunde stattfindet, befindet sich der Thread fast die gesamte Zeit über in der Schlafmethode sleep() Also wird vermutlich der interrupt() den Thread gerade beim Schlafen stören Dann wird sleep() durch InterruptedException unterbrochen, und der catch-behandler fängt die Ausnahme ein Durch Unterbrechung wird das interne Flag zurückgesetzt, sodass isinterrupted() meint, die Unterbrechung habe gar nicht stattgefunden interrupt() muss erneut aufgerufen werden, da das Abbruch-Flag neu gesetzt werden muss und isinterrupted() das Ende bestimmen kann neben sleep() löschen auch die Methoden join() und wait() durch die InterruptedException das Flag Der stop() von außen Wenn Thread nicht auf interrupt() hört, aber aus irgendwelchen Gründen dringend beendet werden muss, können wir die veraltete Methode stop() einsetzen Bietet keine Möglichkeit, dass Thread Zustand konsistent verlässt Thread kann nur noch sein Testament in Form eines ThreadDeath-Objekts anzeigen Das ThreadDeath-Objekt Immer Wenn Thread durch stop() zum Ende kommen soll, löst JVM ThreadDeath-Ausnahme aus, die Thread letztendlich beendet ThreadDeath ist Unterklasse von Error, das wiederum von Throwable abgeleitet ist, sodass ThreadDeath mit einem try-catch-block abgefangen werden kann Wenn man ThreadDeath auffängt, kann man noch auf den Tod reagieren und Aufräumarbeiten erlauben Man sollte aber nicht vergessen, anschließend das aufgefangene ThreadDeath-Objekt wieder auszulösen, weil der Thread sonst nicht beendet wird Beispiel: ThreadStopRevovery.java public static void main(string[] args) throws InterruptedException { ThreadStopRecovery tsr = new ThreadStopRecovery(); tsr.start(); Thread.sleep(1); tsr.stop(); try { while (true) System.out.println("I Like To Move It."); catch (ThreadDeath td) { System.out.println("Das Leben ist nicht tot zu kriegen."); throw td; Marcel Wieczorek S e i t e
7 Auf das Ende Warten mit join() Will man Aufgaben auf mehrere Threads verteilen, kommt der Zeitpunkt, an dem Ergebnisse eingesammelt werden Resultate können allerdings erst zusammengebracht werden, wenn alle Threads mit Ausführung fertig sind Zum Warten gibt es mehrere Strategien o Zunächst lässt sich mit Callable arbeiten, um dann mit get() synchron auf das Ende zu warten o Arbeitet man mit Runnable, kann ein Thread keine direkten Ergebnisse wie eine Funktion nach außen geben, weil die run()-methode den Ergebnistyp void hat o Da nebenläufiger Thread zudem asynchron arbeitet, weiß auch nicht, wann das Ergebnis zu erwarten ist Übertragung von Werten ist kein Problem Hier können Klassenvariablen und auch Objektvariablen helfen, denn über sie kann man kommunizieren Was fehlt, ist die Möglichkeit, auf das Ende der Aktivität eines Thread warten zu können Das funktioniert mit der Methode join() In folgendem Beispiel legt Thread t Ergebnis in Variable result ab Beispiel: JoinTheThread.java public static void main(string[] args) throws InterruptedException { JoinerThread t = new JoinerThread(); t.start(); t.join(); System.out.println(t.result); Beispiel: JoinerThread.java public class JoinerThread extends Thread { public int result; result = 1; Ohne Zeile t.join() wird mit der Ausgabe nicht gewartet, bis JoinerThread fertig ist und daher hat die Variable result noch den Wert 0 Threads schlafen Manchmal notwendig, Thread bestimmt Zeit lang anzuhalten; dazu lassen sich zwei Methoden nutzen Klassenmethode: Thread.sleep() Objektmethode: sleep() auf einem TimeUnit-Objekt Beide beziehen sich auf den ausführenden Thread; bei TimeUnit Zeiteinheiten besser sichtbar Marcel Wieczorek S e i t e
8 Beispiel: SleepThread.java package de.assona.threads.sleep; import java.util.concurrent.timeunit; /** mwieczorek */ public class SleepThread extends Thread { public int result; try { //Thread.sleep(2000); TimeUnit.SECONDS.sleep(2); System.out.println("Zeit ist um."); catch (InterruptedException e) { e.printstacktrace(); /** args InterruptedException */ public static void main(string[] args) throws InterruptedException { SleepThread st = new SleepThread(); st.start(); Beispiel: Eine Zeituhr 4.4 Arbeit niederlegen und wieder aufnehmen final void suspend() Hat man die Möglichkeit, auf den Thread zuzugreifen (checkaccess() regelt dies wieder), und der Thread lebt, wird er so lange eingefroren (schlafen gelegt), bis resume() aufgerufen wird final void resume() Weckt einen durch suspend() lahm gelegten Thread wieder auf, der dann wieder arbeiten kann beide Methode veraltet und ähnlich problematisch wie stop() 4.5 Priorität Jeder Thread verfügt über eine Priorität, die aussagt, wie viel Rechenzeit ein Thread relativ zu anderen Threads erhält Priorität ist eine Zahl zwischen Thread.MIN_PRIORITY (1) und Thread.MAX_PRIORITY (10) Durch den Wert kann der Scheduler erkennen, welchem Thread er den Vorzug geben soll, wenn mehrere Threads auf Rechenzeit warten Bei Initialisierung bekommt jeder Thread die Priorität des erzeugenden Threads. Normalerweise ist es die Priorität Thread.NORM_PRIORITY (5) Das Betriebssystem (oder die JVM) nimmt die Threads immer entsprechend der Priorität aus der Warteschlange heraus (daher Prioritätswarteschlange) Die Priorität kann durch Aufruf von setpriority() geändert und mit getpriority() abgefragt werden Marcel Wieczorek S e i t e
9 4.6 Dämonen Thread würde bei Endlosschleife weiterlaufen, auch wenn Hauptapplikation beendet ist (nicht immer beabsichtigt) Dazu erhält Thread spezielle Kennung (wird als Dämon gekennzeichnet) Wenn Hauptprogramm beendet ist und Laufzeitumgebung erkennt, dass kein normaler Thread sondern nur noch ein Daemon läuft, wird dieser beendet Beispiel: DaemonThread.java package de.assona.threads.daemon; /** mwieczorek */ public class DaemonThread extends Thread { public DaemonThread() { setdaemon(true); while (true) System.out.println("Lauf, Thread, lauf"); public static void main(string[] args) { new DaemonThread().start(); Ohne setdaemon(true) würde Thread ewig weiterlaufen 4.7 Kooperative Threads Neben sleep() gibt es weitere Methode, um kooperative Threads zu programmieren: die Methode yield() funktioniert etwas anders als sleep(), da hier nicht nach Ablauf der genannten Millisekunden zum Thread zurückgekehrt wird, sondern yield() den Thread bezüglich seiner Priorität wieder in die Thread-Warteschlange des Systems einordnet Einfach ausgedrückt, sagt yield() der Thread-Verwaltung:»Ich setzte diese Runde aus und mache weiter, wenn ich das nächste Mal dran bin.«4.8 Synchronisation und kritische Abschnitte Eigenständiges Leben der Thread oftmals problematisch für die anderen Gemeinsam genutzte Daten Über statische Variablen oder auch gemeinsam genutzte Datenstruktur können Threads Daten austauschen Marcel Wieczorek S e i t e
10 Probleme beim gemeinsamen Zugriff und kritische Abschnitte Da Threads eigene Daten Verwalten (lokale Variablen, Stack), kommen sie sich nicht in die Quere Auch wenn Threads gmeinsame Daten nur lesen, gibt es kein Problem Gemeinsamer Schreibzugriff ist problematisch Ursprung der Probleme bei Arbeitsweise der Threads (Scheduler unterbricht zu unbekanntem Zeitpunkt Abarbeitung des Threads) Kritische Abschnitte: zusammenhängende Programmblöcke, die nicht unterbrochen werden dürfen und besonders geschützt werden müssen Nicht kritische Abschnitte: z.b. Methoden, die keine Objekteigenschaften verändern Abschnitte mit synchronized schützen Blöcke oder Methoden werden mit Modifier synchronized markiert Betretender Thread setzt bei Objekt-Methoden den Monitor des this-objekts und bei statischen Methoden den Lock des dazugehörigen Class-Objekts Versucht Thread A synchronisierte Methode aufzurufen, die ein anderer Thread B vorher betreten hat, muss der nachfolgende Thread B so lange warten, bis die Methode wieder frei ist (wenn erster Thread Methode verlässt) Beim Verlassen der Methode (oder einer Ausnahme), gibt JVM automatisch den Lock frei Dauer des Locks also an Länge des Methodenaufrufs gekoppelt (kann Parallelität einschränken) Monitore Betritt Programm eine synchronisierte Methode, bekommt es den Monitor des aufrufenden Objekts Wenn diese Methode eine andere aufruft, die am gleichen Objekt synchronisiert ist, kann sie sofort eintreten und muss nicht warten Diese Eigenschaft heißt reentrant (Ohne diese Möglichkeit würde Rekursion nicht funktionieren) Statisch synchronisierte Blöcke private static final Object o = new Object(); static void staticfoo() { synchronized (o) { //... Vor- und Nachteile von synchronisierten Blöcken und Methoden Vorteile Nachteile Schutz des kritischen Bereiches vor Schwer zu debuggen bei threadlastigen Eingriffen durch anderen Thread Programmen Allgemein langsamer als nicht synchronisierte Blöcke / Methoden Gefahr von DeadLocks Marcel Wieczorek S e i t e
11 Deadlocks Deadlock kommt vor, wenn Thread A eine Ressource belegt, die Thread B haben möchte Thread B belegt aber eine Ressource, die Thread A haben möchte Somit können beide nicht vor und nicht zurück (dauernder Wartezustand) Beispiel: Deadlocks package de.assona.threads.deadlocks; import java.util.concurrent.timeunit; import java.util.concurrent.locks.*; /** mwieczorek */ public class DeadLock { private static Lock lock1 = new ReentrantLock(), lock2 = new ReentrantLock(); private static class T1 extends Thread { lock1.lock(); System.out.println("T1: Lock auf lock1 bekommen"); try { TimeUnit.SECONDS.sleep(1); catch (InterruptedException e) { lock2.lock(); System.out.println("T1: Lock auf lock2 bekommen"); lock2.unlock(); lock1.unlock(); private static class T2 extends Thread { lock2.lock(); System.out.println("T2: Lock auf lock2 bekommen"); lock1.lock(); System.out.println("T2: Lock auf lock1 bekommen"); lock1.unlock(); lock2.unlock(); public static void main(string[] args) { new T1().start(); new T2().start(); Marcel Wieczorek S e i t e
12 4.9 Synchronisation über Warten und Benachrichtigen Mit einem Lock-Objekt wie ReentrantLock können zwecks Benachrichtigung Condition- Objekte abgeleitet werden. Dazu dient die Funktion newcondition() Warten mit await() und Aufwecken mit signal() Damit das Warten und Benachrichtigen funktioniert, kommunizieren die Parteien über ein gemeinsames Condition-Objekt, das vom Lock erfragt wird Condition condition = lock.newcondition(); void await() throws InterruptedException Wartet auf ein Signal, oder die Methode wird unterbrochen void signal() Weckt einen wartenden Thread auf Vor der Condition kommt ein Lock Lock-Objekt dient nicht nur dazu, Condition zu liefern Methoden await() und signal() können nur dann aufgerufen werden, wenn vorher ein lock() den Signal-Block exklusiv sperrt Ohne lock() kommt es zur Laufzeit zu einer java.lang.illegalmonitorstateexception Normalerweise könnte nach await() kein anderer Thread über einen durch das gleiche Lock- Objekt gesperrte Abschnitt signal() aufrufen Lösung besteht darin, dass await() den Monitor freigibt, den der Thread hält und den Thread so lange sperrt, bis z.b. von einem anderen Thread das signal() kommt Mehrere Wartende und signalall() Es kann durchaus vorkommen, dass mehrere Threads in einer Warteposition an demselben Objekt sind und aufgeweckt werden wollen signal() wählt dann aus der Liste der Wartenden einen Thread aus und gibt ihm das Signal Sollten alle Wartenden einen Hinweis bekommen, lässt sich signalall() verwenden Beispiel: Erzeuger-Verbraucher-Programm Day_6 Package: de.assona.threads.example 4.10 Gruppen von Threads in einer Thread-Gruppe Wird Thread erzeugt, gehört dieser automatisch zu einer Gruppe, die durch ein ThreadGroup-Objekt repräsentiert wird (Verwaltung ist Aufgabe der Laufzeitumgebung) Gruppenzugehörigkeit bekommt jeder Thread bei seiner Erzeugung zugeteilt (man kann sie beeinflussen) Entweder wird Gruppe beim Erzeugen mit angegeben oder erzeugter Thread kommt in die gleiche Gruppe wie der erzeugende Thread-Gruppen baumartig strukturiert (Wurzel ist die Gruppe main) Thread-Verwaltung wird erleichtert (alle Threads einer Gruppe können gestoppt werden oder Priorität kann verändert werden) Etwas über die aktuelle Thread-Gruppe herausfinden Day_6: de.assona.threads.showthreadsinmain.java Marcel Wieczorek S e i t e
13 Threads in einer Thread-Gruppe anlegen ThreadGroup tg = new ThreadGroup("sync"); Thread t1 = new Thread(tg, "threadname"); 4.11 Die Klassen Timer und TimerTask Scheduler arbeitet Programmstücke nach einer festen Zeitspanne oder zu einem fixen Zeitpunkt einmal oder wiederholt ab TimerTask ist eine Klasse, die Runnable implementiert (in run()-methode dann zeitgesteuerte Ausführung) Übung In dieser Übung sollen die Bremer Stadtmusikanten als Multithreading-Java-Programm implementiert werden. Es wird davon ausgegangen, dass die einzelnen Tiere über eine Art Megaphon ein für sie typisches Geräusch erzeugen können (d.h. die Tiere können nur mit Hilfe des Megaphons ein genug lautes Geräusch erzeugen). Zudem steht nur ein einziges solches Megaphon für alle Tiere zur Verfügung. 1. Jedes Tier soll nach jedem zehnten Mal Laut geben für 1 Sekunde schlafen gehen, ohne das Megaphon aus der Hand zu geben. 2. Jedes Tier soll nach jedem fünften Mal in einen Wartezustand gehen. Zuvor wird das Megaphon freigegeben und alle Tiere, welche sich ebenfalls in diesem Wartezustand befinden, werden aus dem Wartezustand geweckt und über das Freiwerden des Megaphons benachrichtigt. 3. Jedes Tier soll nach jedem tausendsten Mal vor lauter Laut geben in einen apathischen Zustand versinken, ohne das Megaphon herzugeben (suspend). Marcel Wieczorek S e i t e
5. Threads, Serverprozesse und Benachrichtigungen
5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische
2.2 Prozesse in Java
2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.
Ausgewählte Implementierungsprobleme
Ausgewählte Implementierungsprobleme Rebecca Tiarks 18. Dezember 2008 1 / 30 Inhaltsverzeichnis 1 2 3 Persistenzproblem & CSV Binärformat 2 / 30 Themenübersicht 1 18. Dez: + 2 8. Jan. Swing 3 15. Jan TCP,
Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads
Threads Prozesse, Parallelität, Nebenläufigkeit, Threads, Erzeugung, Ausführung, Kommunikation, Interferenz, Kritischer Bereich, Deadlock, Synchronisation. Prozesse Prozesse sind Programme mehrere Prozesse
Parallele Prozesse. Prozeß wartet
Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:
Einführung in die Programmierung Blockkurs Java
Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()
Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012
Übung zu Grundlagen der Betriebssysteme 10. Übung 18.12.2012 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c)
Thread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java
Thread-Konzept in objektorientierten Programmiersprachen 1 Threads ein Thread ist ein eigenständiges Programmfragment, das parallel zu anderen Teilen eines Programmes ablaufen kann alle Threads eines Programmes
Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus
Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel ([email protected]) Möglichkeiten, Threads zu definieren Bildung einer
Variablen manipulieren per JDI
Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt
12. Threads in Java. Sequentielle Abarbeitung (2) Beispiel: Thread (1) Sequentielle Abarbeitung (1)
12. Threads in Java Einführendes Beispiel 12. Threads in Java 12. Threads in Java Einführendes Beispiel Sequentielle Abarbeitung (2) Ein Thread ist eine Folge von Anweisungen, die unabhängig von anderen
Synchronisation in Java. Invisible Web
Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections
Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)
Ein Prozess kann unmittelbar vom Zustand 1. Running in den Zustand Ready 2. Running in den Zustand Blocked 3. Ready in den Zustand Running Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Der Adressraum
Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen
Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von
Java-Programmierung. Remote Method Invocation - RMI
Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig
Beispiel für überladene Methode
Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter
Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf
16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen
Informatik B - Objektorientierte Programmierung in Java. Vorlesung 21: Threads 2. Inhalt
Universität Osnabrück 1 wait und notify 3 - Objektorientierte Programmierung in Java Vorlesung 21: Threads 2 SS 2006 Prof. Dr. F.M. Thiesing, FH Osnabrück Neben dem Monitorkonzept stehen mit den Methoden
Parallele Programmierung in Java
PPJ-1 Parallele Programmierung in Java Prof. Dr. Uwe Kastens Sommersemester 2000 Vorlesung Parallele Programmierung in Java SS 2000 / Folie 01 PPJ-2 Ziele und Durchführung Die Studierenden sollen grundlegende
IT in der Arztpraxis Technisches Handbuch zum Kodierassistenten
Technisches Handbuch zum Kodierassistenten [KBV_ITA_AHEX_Handbuch_Kodierassistent] Dezernat 6 Informationstechnik, Telematik und Telemedizin 10623 Berlin, Herbert-Lewin-Platz 2 Kassenärztliche Bundesvereinigung
Mobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 [email protected] Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung
Verteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,
3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
Parallele und verteilte Anwendungen in Java
Parallele und verteilte Anwendungen in Java Bearbeitet von Rainer Oechsle 3., erweiterte Auflage 2011. Buch. 416 S. Hardcover ISBN 978 3 446 42459 3 Format (B x L): 20,3 x 24,5 cm Gewicht: 1068 g Weitere
Mobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 [email protected] Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste
Threads In dieser Übung beschäftigen wir uns mit der Realisierung von Threads in Java.
Threads In dieser Übung beschäftigen wir uns mit der Realisierung von Threads in Java. Aufgabe 1: Erzeugen und Starten von Threads a) Sei BankKunde eine von einer Klasse Kunde abgeleitete Klasse. Erweitern
Nebenläufige Programmierung I
Nebenläufige Programmierung I Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS06 2 Ziele Grundlegende Begriffe der nebenläufigen Programmierung verstehen lernen Nebenläufige Programme
Schritt 1 - Ein Spielfeld
Schritt 1 - Ein Spielfeld Wir beginnen mit zwei einfachen Java-Klassen, dem eigentlichen Spielfeld und dem Applet zum Anzeigen des Spielfeldes (und später der Buttons und der anderen Bedienelemente). Hier
LeJOS: Mindstorms in Java programmieren
LeJOS: Mindstorms in Java programmieren Alexander Koller Softwareprojekt "Sprechende Roboter" 30. April 2004 Überblick Warum Java? Was ist LeJOS? Motoren steuern Auf Sensoreingaben reagieren Wie geht's
Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions
try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
Schedulingund Thread-Ausführer
Schedulingund Thread-Ausführer Scheduling Ein Scheduler arbeitet Programmstücke nach einer festen Zeitspanne oder zu einer fixen Zeitpunkt wiederholt oder einmal ab. Notwendigkeiten für Scheduling sind
Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH [email protected]
Multi-Threading Ralf Abramowitsch Vector Informatik GmbH [email protected] Einführung in Threads Threads synchronisieren ThreadPools Thread = unabhängiger Ausführungspfad, der gleichzeitig
Einführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung
Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des
Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06
Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Aufgabe 1 Bitte schreiben Sie ein RMI Objekt, das eine Person repräsentiert. Es soll die folgende Schnittstelle implementieren: public interface Person
Javakurs für Anfänger
Javakurs für Anfänger Einheit 03: Wiederholung und Nutzereingaben Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Wiederholung Klassen, Objekte, Attribute und Methoden
Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)
Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite
2A Basistechniken: Weitere Aufgaben
2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen
Programmieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
Exceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero
Exceptions Prof. Dr. Margarita Esponda SS 2012 1 Ausnahmen Eine Ausnahme (Exception) ist ein Fehler oder ein nicht geplantes Ereignis, das während der Ausführung eines Programms vorkommt und dessen normalen
Remote Method Invocation
Remote Method Invocation spezielle Technik aus dem Java-Umfeld Ausführung der Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VM s Aufruf
Theorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
Allgemeine Informatik II SS :30-13:30 Uhr
TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer
3. Anweisungen und Kontrollstrukturen
3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen
Multithreading ab Java 5: Die neuen Concurrency APIs
Multithreading ab Java 5: Die neuen Concurrency APIs Java Concurrency Spezifiziert in JSR166 Ab Java 5 fester Bestandteil von Java Durch zusätzliche Library auch vor Java 5 vorhanden backport-util-concurrent
Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik
Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen
Betriebssysteme. Wintersemester 2015. Kapitel 2 Prozess und Threads. Patrick Kendzo [email protected]
Betriebssysteme Wintersemester 2015 Kapitel 2 Prozess und Threads Patrick Kendzo [email protected] Programm Inhalt Einleitung Prozesse und Threads Speicherverwaltung Eingabe und Ausgabe Dateisysteme Zusammenfassung
Zusammenfassung Modul 223
Zusammenfassung Modul 223 von Christian Roth Powered by Schuschu Bison Schweiz AG, Surentalstrasse 10, CH-6210 Sursee, www.bison-group.com Inhaltsverzeichnis 1 Entwurfmuster... 3 1.1 Singleton... 3 1.1.1
Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige
Monitore. Klicken bearbeiten
Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
9 Multithreading. 1 Idee des Multithreading
9 Multithreading Jörn Loviscach Versionsstand: 21. Juli 2015, 11:50 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work is licensed
Vorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme
Vorname: Nachname: Matrikelnummer: Klausur Betriebssysteme 12.02.2013 Hinweise: 1. Beschriften Sie als erstes diese Seite mit Ihrem Namen, Vornamen und Ihrer Matrikelnummer (deutlich in Druckbuchstaben).
Java-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
Javakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )
Threads Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden ) Ein thread bearbeitet eine sequentielle Teilaufgabe innerhalb eines Prozesses Mehrere nebenläufige
7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
Java RMI Remote Method Invocation
Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert
Sven Osterwald Concurrent Objects. Proseminar Parallele Programmierung in Java
Sven Osterwald 12.05.2010 Concurrent Objects Proseminar Parallele Programmierung in Java Überblick 1. Einführung 2. Beispiel FIFO-Queue mit und ohne Lock 3. Korrektheit bei sequentiellen Objekten 4. Korrektheit
Operating System Kernels
Operating System Kernels von Patrick Bitterling 1 Themenübersicht -Eine Einleitung über Kernel -Begriffserklärung, Architekturen -Kernel Subsysteme -Prozess-Scheduling, Speichermanagement,... -Der Networking
Nebenläufige Programmierung in Java
Informatik IV 37-004 SS 2002 Thomas Gross Diese Slides kommen ohne Gewähr. 9-1 Thomas Gross 1997-2000 Nebenläufige Programmierung in Java Threads und deren Zustände Speichermodell Einfache Synchronisation
Java Fehlerbehandlung
Java Fehlerbehandlung 1 Fehlerbehandlung In jedem nicht-trivialen Programm kann es während der Laufzeit zu Fehlersituationen kommen. Dabei handelt es sich nicht unbedingt um Programmierfehler: z. B.: Programm
Präsentation Interfaces
Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.
Synchronisation von Variablen und Operationen (gemeinsamer Speicher)
Synchronisation von Variablen und Operationen (gemeinsamer Speicher) Vorbemerkung Beispiel für Wettlaufbedingungen Threadsicherheit Unveränderliche Objekte Volatile-Deklaration Atomare Operationen Lock-Mechanismen
Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
Studentische Lösung zum Übungsblatt Nr. 7
Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int
5.5.8 Öffentliche und private Eigenschaften
5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung
Kapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
Android Processes & Services
Android Processes & Services Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 4 besprechen (inkl. Repetition)
Kapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Technische Informatik II
Institut für Technische Informatik und Kommunikationsnetze Technische Informatik II Übung 1: Prozesse und Threads Aufgabe 1: Prozesse und Threads a) Wie verhält sich eine Applikation die aus mehreren Prozessen
6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
6. Tutorium zu Softwaretechnik I
6. Tutorium zu Softwaretechnik I Parallelität und Testen Michael Hoff 01.07.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum
Lehr- und Forschungsgebiet Informatik 2. Proseminar-Arbeit. über das Thema Multithreading und Synchronisation in Java. Jens Bürger
Kapitel 1 Einleitung Lehr- und Forschungsgebiet Informatik 2 Proseminar-Arbeit über das Thema Multithreading und Synchronisation in Java Autoren: Betreuerin: Isabel Klöter Jens Bürger Jera Hensel Abgabedatum:
Beispiel Klausuraufgaben
Beispiel Klausuraufgaben HINWEIS: In diesem Dokument befinden sich mehrere Aufgaben. Es ist keine Beispielklausur. In der Klausur werden nur ca. 2 Aufgaben zu meinen Themengebieten (Nebenläufigkeit, Visuelle
JAVA - Methoden - Rekursion
Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen
Grundzüge der Programmierung. Wiederverwendung VERERBUNG
Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse
Javakurs für Anfänger
Javakurs für Anfänger Einheit 13: Ausnahmen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Ausnahmen (Exceptions) Motivation Fehlerbehandlung Klassenhierarchie Checked vs. Unchecked
Remote Method Invocation
Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem
Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
Überblick. Middleware - Übung. Threads in Java. Was ist ein Thread? Multithreading in Java Threads Synchronisation Koordinierung
Überblick Middleware - Übung Tobias Distler, Michael Gernoth, Rüdiger Kapitza Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de
Objektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
Java Schulung (Java 2 Java Development Kit 5 / 6)
2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt
