Threads in Java. Threads. Die Klasse Thread. Erzeugen eines neuen Threads. Threads. Ein Thread. Alle Threads eines Programms A B C.

Größe: px
Ab Seite anzeigen:

Download "Threads in Java. Threads. Die Klasse Thread. Erzeugen eines neuen Threads. Threads. Ein Thread. Alle Threads eines Programms A B C."

Transkript

1 Threads Ein Thread ist ein eigenständiges Programmstück, das parallel zu anderen Threads laufen kann kann mit einem Prozeß verglichen werden, läuft jedoch auf einer feineren Stufe ab Ein Prozeß ist ein Instrument, um ein komplettes Programm auszuführen Innerhalb eines Prozesses können mehrere Threads parallel ablaufen Alle Threads eines Programms teilen sich einen gemeinsamen Adressraum Adressräume von Prozessen sind streng getrennt können auf gleiche Variablen zugreifen Programm / Prozess A Programm / Prozess A B C Ein Thread Mehrere Threads Threads in Java Threads sind direkter Bestandteil der Sprache Java sind immer Instanzen einer Klasse, die das Interface Runnable implementiert Runnable deklariert nur die (abstrakte) Methode void run() run() enthält alle im Thread auszuführenden Anweisungen Instanzen von Klassen, die Runnable implementieren, heißen (Thread)-Targets kommunizieren durch Zugriff auf Instanz- oder Klassenvariablen Aufruf von Methoden, die innerhalb von run() sichtbar sind werden gesteuert durch die Klasse Thread (aus java.lang.thread) Thread implementiert das Interface Runnable Jede Instanz von Thread (oder einer von Thread abgeleiteten Klasse) ist Target eines Threads (kann als Thread ausgeführt werden) FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 2 Die Klasse Thread Konstruktoren public Thread() public Thread(String name) public Thread(Runnable target) public Thread(Runnable target, String name) Methoden void run() void start() throws IllegalThreadStateException static void sleep(long millis) finale boolean isalive() Generischer Name Thread-<nummer> Thread-Name Thread-Target Enthält auszuführenden Programmcode Wenn Thread schon gestartet true wenn Thread gestartet wurde final void setname() final String getname() final void setpriority(int prio) final int getpriority() FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 3 Erzeugen eines neuen Threads Zum Erzeugen eines Threads muss eine Klassen von Thread abgeleitet werden die Methode run() überschrieben werden Gestartet wird ein Thread durch den Aufruf von start() Anschließend wird die weitere Ausführung automatisch an die Methode run übertragen Direkter Aufruf von run würde keinen neuen Thread erzeugen public class SimpleThread MyThread thread = new MyThread(); Out.println("Starting thread..."); try Thread.sleep(20); catch (InterruptedException e) thread.stop(); // Deprecated!!! Out.println("Thread has been stopped!"); class MyThread extends Thread int counter=0; while(true) Out.println(getName()+ : +counter++); Würde wie ein normaler Methodenaufruf aus dem Programm-Ausgabe Starting thread... laufenden Thread behandelt Thread-0: 1 Thread-0: 2.. Thread-0: 321Thread has been stopped! FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 4

2 Beenden eines Threads Beispiel Ein Thread sollte nicht mit der Methode stop() beendet werden Es ist nicht definiert und auch nicht voraussagbar, wann der Thread beendet wird Threads am besten durch Verwendung eines Flags beenden Variable z.b. boolean stopmythread zeigt an, ob Thread stoppen soll Target Thread überprüft die Variable stopmythread regelmässig Beendet die Methode run(), wenn die stopmythread gleich true ist Damit sofort auf stop reagiert wird, muss entweder die Variable volatile sein, oder Mit dem Schlüsselwort volatile werden Variablen gekennzeichnet, die asynchron (außerhalb des aktuellen Threads) modifizierbar sein sollen. der Zugriff auf die Variable synchronisiert sein FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 5 class MyStopThread extends Thread private volatile Thread thread = this; //private volatile boolean cancel = false; /* Die Methode stop() kann nicht überschrieben werden da sie final ist */ mystop() thread = null; //cancel = true; Thread thisthread=thread.currentthread(); int counter = 0; while (thread == thisthread) // while (!cancel) Out.print(currentThread()+": ); Out.println(counter++); public class MyStopThreadExample MyStopThread thread = new MyStopThread(); Out.println("Starting thread..."); try Thread.sleep(20); catch (InterruptedException e) FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 6 thread.mystop(); Out.println("Thread has been stoped"); Out.print("Thread is alive: ); Out.println(thread.isAlive()); Programm-Ausgabe (Beispiel) Starting thread... Thread[Thread-0,5,main]: 1.. Thread[Thread-0,5,main]: 5 Thread has been stoped Thread is alive:true Thread[Thread-0,5,main]: 60 Unterbrechungsanforderungen Beispiel (interrupt und isinterrupted) Das richtige Mass für die Abfragehäufigkeit des Stop-Flags ist in der Praxis schwierig zu finden Wird Stop-Flag zu oft abgefragt, werden unnötig Ressourcen verbraucht Wird Stop-Flag zu selten abgefragt, ist die Zeit bis zum Stop zu lang Die Klasse Thread stellt hierfür folgende Methoden zur Verfügung interrupt() Setzt ein (Abbruch-)Flag, das eine Unterbrechungsanforderung signalisiert public boolean isinterrupted() Liefert true, wenn das Abbruch-Flag gesetzt ist public static boolean interrupted() Liefert den Status des Abbruch-Flags beim aktuellen Thread Entspricht dem Aufruf von currentthread().isinterrupted() und anschließendem Zurücksetzen des Abbruchflags auf initialen Wert false FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 7 public class ThreadInterrupt MyInterruptThread thread = new MyInterruptThread(); System.out.println("Starting thread..."); try Thread.sleep(100); catch (InterruptedException e) System.out.println("isAlive: +thread.isalive()); thread.interrupt(); System.out.println("isAlive: +thread.isalive()); class MyInterruptThread extends Thread int counter = 0; if (isinterrupted()) break; try Thread.sleep(10); catch (InterruptedException e) System.out.println(e); interrupt(); System.out.println(counter++); Abbruchflag wird zurückgesetzt Programm-Ausgabe Starting thread isalive: true 6 Java.lang.InterruptedException: sleep interrupted 7 isalive: false FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 8

3 Die Methode sleep Das Interface Runnable Mit Hilfe der folgenden Methoden kann ein Thread pausieren public static void sleep(long millis) Aktueller Prozeß wird für millis Millisekunden angehalten public static void sleep(long millis, int nanos) Aktueller Prozeß wird für millis Millisekunden und nanos Nanosekunden angehalten Tatsächliche Genauigkeit hängt von der Zielarchitektur ab Unter Windows ist es etwa 1ms sleep muss in einem try-catch Block gekapselt werden (kann während der Wartezeit eine Ausnahme vom Typ InterruptedException auslösen) Beim Starten eines Java-Programms wird automatisch ein Thread für die Ausführung des Hauptprogramms angelegt Die Methode sleep kann somit auch dazu verwendet werden das Hauptprogramm pausieren zu lassen Nicht alle Klassen, die als Thread laufen sollen, können von Thread abgeleitet werden Ist eine Klasse schon Bestandteil einer Vererbungshierarchie, kann sie nicht mehr von Thread abgeleitet werden (keine Mehrfachvererbung in Java) Anstatt einen Thread durch Ableiten der Klasse Thread, kann man ihn auch durch Implementieren der Interfaces Runnable erzeugen Das Interface Runnable enthält nur eine einzige Methode public abstract void run() Jede Klasse, deren Instanzen als Thread laufen sollen muss das Interface Runnable implementieren (auch Thread selbst) Um eine Instanz einer Klasse die Runnable implementiert als Thread laufen zu lassen muss man Ein neues Thread-Objekt erzeugen Konstruktor erhält Thread-Target Die Methode start() von Thread aufrufen C c = new C(); Thread t = new Thread(c); t.start(); FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 10 Runnable (Beispiel) Wo ist der Fehler? class A public class RunnableExample class Count extends Thread public class CountThread int counter; long maxnumber; Instanz von B soll als Thread laufen public Count(long maxnumber) Count c = new Count(10); B b = new B(); this.maxnumber = maxnumber; c.start(); class B extends A B Kann nicht von Thread abgeleitet werden Thread thread = new Thread(b); System.out.println("Starting thread..."); for(long i=0; i<=maxnumber; i++) new Thread(c).start(); Count2 c2 = new Count2(10); counter = 0; while(true) Ruft die run-methode der Klasse B auf System.out.println("Int Count: "+i); c2.start(); new Thread(c2).start(); if (Thread.interrupted()) try break; Thread.sleep(200); class Count2 catch (InterruptedException e) long maxnumber; System.out.println(counter++); thread.interrupt(); System.out. println("thread has been stopped"); public Count2(long maxnumber) this.maxnumber = maxnumber; for (long i=0; i<=maxnumber; i++) Geht nicht da Count2 keine Methode start() kennt System.out.println("Int Count2: "+i); FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 12

4 Synchronisationsprobleme class T1 extends Thread Person p; public T1(Person p) this.p = p; System.out.println(p.getName()); class T2 extends Thread Person p; public T2(Person p) this.p = p; p.setname("peter","barth"); p.setname("wolfgang","weitz"); class Person String name; String surname; setname(string n, String s) name = n; surname = s; FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 13 public String getname() return name + " " + surname; public class NameSync Person p = new Person(); T1 t1 = new T1(p); T2 t2 = new T2(p); t2.start(); t1.start(); Mögliche Programmausgaben Peter Barth Wolfgang Weitz Peter Weitz Wolfgang Barth Synchronisation mittels synchronized Um Threads zu synchronisieren gibt es in Java das Konzept des Monitors Ein Monitor kapselt einen kritischen Bereich (Programmteil, der nur von einem Programmteil auf einmal durchlaufen werden darf) mit Hilfe einer automatischen Sperre Sperre wird beim Betreten des Bereichts gesetzt Verlassen zurückgesetzt Ist die Sperre beim Eintritt in einen Monitor gesetzt, muss der aktuelle Prozeß warten, bis die Sperre freigegeben wird Das Monitor-Konzept wird in Java durch das Schlüsselwort synchronized realisiert Es kann eine komplette Methode oder ein Block innerhalb einer Methode geschützt werden public class SyncedThreads extends Thread static int counter = 0; Thread thread1 = new SyncedThreads(); Thread thread2 = new SyncedThreads(); thread1.start(); thread2.start(); try Thread.sleep(1000); catch (InterruptedException e) thread1.stop(); thread2.stop(); Mehrere Instanzen synchronized(getclass()) von SyncedThread System.out.println(counter++); FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 14 Synchronisation von Methoden Animation public class SyncedFuncThread extends Thread int number; Thread thread1 = new SyncedFuncThread(10); Thread thread2 = new SyncedFuncThread(20); thread1.start(); thread2.start(); try Thread.sleep(2000); catch (InterruptedException e) thread1.stop(); thread2.stop(); public SyncedFuncThread(int n) number = n; for (int i = 0; i < 10; i++) Output.printRow(number); class Output static synchronized void printrow(int number) for (int i = 0; i < 10; i++) System.out.print(number + " "); int n = 0; double w; while (n < 10000) w = Math.sqrt(n++); System.out.println(); Ohne synchronized Mit synchronized Eine Animation ist das aufeinanderfolgende Anzeigen einer Sequenz von Einzelbildern Trägheit des menschlichen Auges sorgt für die Illusion einer zusammenhängenden Bewegung Probleme bei der Animation Einzelbilder müssen im richtigen Timing angezeigt werden Zu wenig Bilder pro Zeiteinheit führen zu ruckelnder Animation Sollen zu viele Bilder gezeichnet werden, können Bildteile verloren gehen Darstellung der Animation darf die Interaktivität eines Programms nicht beeinflussen Einzelbilder müssen mit Hilfe von Double-Buffering oder ähnlichen Techniken gezeichnet werden Naive Verwendung der paint/repaint-methoden von Java führt zu starkem Flackern FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 16

5 Animation in Java Einfach Animation (ohne eigenen Thread) Eine Animation kann in Java dadurch realisiert werden, dass in einer Schleife die Methode repaint wiederholt aufgerufen wird Aufruf von repaint führt zum internen Aufruf der paint-methode paint erzeugt dann das jeweils aktuelle Einzelbild Die Methode paint muss wissen, welches Bild bei welchem Aufruf erzeugt werden soll Meist wird hierzu ein Schleifenzähler verwendet, der das aktuelle Bild bezeichnet Nach der Ausführung von paint wartet der Aufrufer eine gewisse Zeitspanne Anschließend wird der Schleifenzähler erhöht und erneut paint aufgerufen Das ganze wird solange wiederholt, bis die Animation beendet ist FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 17 startanimation() public class SimpleAnim extends Frame int count = 0; paint(graphics g) SimpleAnim window = new SimpleAnim(); count = (count + 10) % getwidth(); g.fillrect(count, 175, 50, 50); try // 25 frames per second (fps) catch (InterruptedException e) public SimpleAnim() super("simple animation"); setbackground(color.blue); addwindowlistener(new WindowAdapter() windowclosing(windowevent e) ); FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 18 Verwendung von Threads Einfach Animation (in eigenem Thread) Damit Programme, die Animationen enthalten, durch diese nicht komplett lahm gelegt werden, sollten alle repaint-schleifen in eigenen Threads laufen Zeitverzögerungen in die repaint-schleifen verlegt werden Haupt-Thread eines Animations-Programms hat dann genug Zeit, um die Bildschirmausgabe durchzuführen weitere Events zu bearbeiten public class AnimWThread extends Frame int x = 100, y = 10; int dx = 10, dy = 10; AnimWThread window = new AnimWThread(); startanimation() Thread thread = new Thread(this); try // 25 fps catch (InterruptedException e) Zur Verwendung mehrerer Threads muß die Fensterklasse das Interface Runnable implementieren Die Methode run() überschreiben eine Instanzvariable vom Typ Thread anlegen FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 1 public AnimWThread() paint(graphics g) super("simple animation with thread"); x +=dx; setbackground(color.yellow); if(x>getwidth()-50 x<0) dx = -dx; addwindowlistener(new WindowAdapter() y +=dy; if(y>getheight()-50 y<0) dy = -dy; g.fillrect(x, y, 50, 50); windowclosing(windowevent e) ); FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 20

6 Reduzierung des Bildschirmflackerns Vor jedem Aufruf von paint wird zunächst der gesamte Inhalt des Fensters gelöscht Es erscheint somit kurz ein vollständig leerer Hintergrund Dies führt zu mehr oder weniger starkem Flackern der Animation Bildschirmflackern kann unterschiedlich unterdrückt werden 1. Bildschirm nicht löschen (nur bei nicht bewegten Animationen möglich) Aufruf von repaint ruft zunächst die Methode update der Klasse Component update(graphics g) g.setcolor(getbackground()); g.fillrect(0,0,width,height); g.setcolor(getforeground()); paint(g); Ersetzen durch update(graphics g) paint(g); 2. Nur den wirklich benötigen Bildschirmteil löschen und neu zeichnen 3. Double-Buffering (im Hintergrund zeichnen, fertige Zeichnung anzeigen) FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke Bildschirm nicht löschen public class AnimWThread extends Frame int x = 100, y = 10; int dx = 10, dy = 10; AnimWThread window = new AnimWThread(); startanimation() Thread thread = new Thread(this); try // 25 fps catch (InterruptedException e) paint(graphics g) x +=dx; if(x>getwidth()-50 x<0) dx = -dx; y +=dy; if(y>getheight()-50 y<0) dy = -dy; g.fillrect(x, y, 50, 50); public AnimWThread() super("simple animation with thread + (without clearing the frame) ); setbackground(color.yellow); addwindowlistener(new WindowAdapter() windowclosing(windowevent e) update(graphics g) paint(g); ); FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke Bildschirm nicht löschen 2. Nur den benötigten Bereich löschen Bei bewegten Animationen kann es sinnvoll sein, nur die Teile des Bildschirms zu löschen, die im aktuellen Animationsschritt leer sind im vorangegangenen Schritt Grafikelemente enthielten Hierzu wird wiederum das automatische Löschen des Bildschirms durch Überlagern der Methode update verhindert In jedem Animationsschritt müssen alle benötigten Informationen über den vorangegangenen Schritt vorhanden sein Die Applikation muss sich dann selbst um das Löschen der relevanten Bildbereiche kümmern FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 24

7 2. Nur den benötigten Bereich löschen public class AnimWThread extends Frame int x = 100, y = 10; int dx = 10, dy = 10; AnimWThread window = new AnimWThread(); startanimation() Thread thread = new Thread(this); try // 25 fps catch (InterruptedException e) paint(graphics g) g.setcolor(getbackground()); g.fillrect(x, y, 50, 50); x +=dx; if(x>getwidth()-50 x<0) dx = -dx; y +=dy; if(y>getheight()-50 y<0) dy = -dy; g.setcolor(color.black); g.fillrect(x, y, 50, 50); public AnimWThread() super("simple animation with thread + (clear only part of the frame) ); setbackground(color.yellow); addwindowlistener(new WindowAdapter() windowclosing(windowevent e) update(graphics g) paint(g); ); FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke Double-Buffering Double-Buffering ist ein universelles Mittel gegen Bildschirmflackern Bei jedem Animationsschritt werden zunächst alle Bildschirmausgaben in einen Buffer (Offscreen-Image) geschrieben Sind alle Ausgaben abgeschlossen, wir das Offscreen-Image auf die Fensteroberfläche kopiert 1. Zeichnen Graphics 2. Kopieren Offscreen-Image Offscreen-Image Prinzipelle Funktionsweise des Double-Bufferings in Java Ein Fensterobjekt beschafft sich durch Aufruf der Methode createimage ein Offscreen-Image und speichert es in einer Instanzvariablen Mittels getgraphics erhält man einen Grafikkontext zu dem Image Alle Bildschirmausgaben erfolgen auf den Offscreen-Grafikkontext Bildschirm Bildschirm Sind alle Ausgabeoperationen abgeschlossen, wird das Offscreen-Image mittels drawimage in das Ausgabefenster kopiert FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 26 Erweitern der Klasse Frame Eine Klasse DoubleBufferFrame Double-Buffering läßt sich in Java komplett kapseln Hierzu leitet man von der Klasse Frame eine neue Klasse DoubleBufferingFrame ab Die neue Klasse enthält zwei private Membervariable dbimage enthält das Offscreen-Image dbgraphics enthält den Offscreen-Grafikkontext Zusätzlich muss die Methode update geeignet überschrieben werden In update wird paint mit dbgraphics als Argument aufgerufen paint sendet dann alle Grafikbefehle auf das Offscreen-Image Zum Schluß wird mittels g.drawimage(dbimage,0,0,this) das Offscreen- Image auf dem Bildschirm angezeigt Alle Klassen, die von DoubleBufferingFrame abgeleitet sind, unterstützen nun das Double-Buffering automatisch Damit können schon bestehende Programme nachträglich flackerfrei gemacht werden, ohne dass eine einzige Zeile der eigentlichen Ausgaberoutinen geändert werden muss FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 27 public class DoubleBufferFrame extends Frame update(graphics g) private Image dbimage; // Initialising double buffer private Graphics dbgraphics; if (dbimage == null resized) private boolean resized; resized = false; dbimage = createimage( public DoubleBufferFrame() this.getsize().width, addcl(); this.getsize().height); dbgraphics = dbimage.getgraphics(); public DoubleBufferFrame(String s) super(s); // Clear background addcl(); dbgraphics.setcolor(getbackground()); dbgraphics.fillrect(0, 0, Auf Änderung der Fenstergröße reagieren this.getsize().width, void addcl() this.getsize().height); addcomponentlistener( // Paint foreground new ComponentAdapter() dbgraphics.setcolor(getforeground()); paint(dbgraphics); componentresized(componentevent e) // Show offscreen resized = true; g.drawimage(dbimage, 0, 0, this); ); FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 28

8 Animation mit Double-Buffering (Beispiel) Double-Buffering Beispiel public class DoubleBufferExample extends DoubleBufferFrame int xb = 100, yb = 100, xs = 150, ys = 150; int dx = 10, dy = 10, angle = 0; double rad; DBExample window = new DBExample(); public DoubleBufferExample() super("double-buffering example"); addwindowlistener(new WindowAdapter() windowclosing(windowevent e) ); try // 25 fps catch (InterruptedException e) angle = (angle + 10) % 360; rad = angle*math.pi/180; xb += dx; if (xb>getwidth()-70 xb<0) dx = -dx; yb += dy; if (yb>getheight()-70 yb<0) dy = -dy; xs = xb (int)(35*math.sin(rad)); ys = yb (int)(35*math.cos(rad)); startanimation() g.filloval(xs, ys, 20, 20); Thread thread = new Thread(this); FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 2 paint(graphics g) g.setcolor(color.blue); g.filloval(xb, yb, 50, 50); g.setcolor(color.green); FH-Wiesbaden --- Medieninformatik --- SS Prof. Dr. Ulrich Schwanecke 30

2.2 Prozesse in Java

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.

Mehr

5. Threads, Serverprozesse und Benachrichtigungen

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

Mehr

Multithreading und Animationen in Java

Multithreading und Animationen in Java Multithreading und Animationen in Java Manuel Rädle Was ist eine Animation Schnell aufeinanderfolgende Anzeige einer Sequenz von Einzelbildern, Texten oder Objekten Die Bildfolge erscheint als zusammenhängende

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 16. Java: Threads für Animationen 1 Motivation

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer

Mehr

Programmierung mit Threads in Java

Programmierung mit Threads in Java Programmierung mit Threads in Java Harald Kosch and Matthias Ohlenroth Institut für Informationstechnologie Universität Klagenfurt H. Kosch Threads in Java 1 Inhalt Grundlagen: Threads und Datenlokalität

Mehr

Motivation. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 20: Threads. Inhalt. Ein Beispiel zur Motivation

Motivation. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 20: Threads. Inhalt. Ein Beispiel zur Motivation Universität Osnabrück 1 Motivation 3 - Objektorientierte Programmierung in Java Führt ein Applet eine lange Berechnung aus, so erfolgt keine Reaktion auf die Betätigung des Stop-Buttons am Browser bzw.

Mehr

Nebenläufigkeit mit Java

Nebenläufigkeit mit Java Nebenläufigkeit mit Java Einheit 02: Eigenschaften & kritische Abläufe Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Eigenschaften von Threads Name, Priorität, Zustand Zustandsübergänge

Mehr

Parallele Prozesse. Prozeß wartet

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:

Mehr

Parallele Prozesse Prozeß Parallele Prozesse verzahnte Prozesse Nebenläufige Prozesse: Threads Vorlesung Software-Entwicklung / Folie 131 Ziele:

Parallele Prozesse Prozeß Parallele Prozesse verzahnte Prozesse Nebenläufige Prozesse: Threads Vorlesung Software-Entwicklung / Folie 131 Ziele: Parallele Prozesse SWE-131 Prozeß: Ausführung eines sequentiellen Programmstückes in dem zugeordneten Speicher (Adressraum). Veränderlicher Zustand: Speicherinhalt und Programmposition. Parallele Prozesse:

Mehr

Bitmaps und Animationen

Bitmaps und Animationen Bitmaps und Animationen 1 Themenübersicht 1. Bitmaps 1. Die Klasse Image 2. Laden und Anzeigen von Bildern 3. Skalierungen und Transformationen 2. Animationen 1. Animationen mit Threads 2. Bildschirmflackern

Mehr

8.6 Visualisierung der Sortieralgorithmen

8.6 Visualisierung der Sortieralgorithmen 8.6 Visualisierung der Sortieralgorithmen 8.6.1 Problemstellung Schauen Sie sich den folgenden Quelltext eines Java-Applets an: import java.awt.*; import javax.swing.*; import java.awt.event.*; public

Mehr

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore. Hochschule Harz Versuch: fcopy Mit Java FB Automatisierung und Informatik Betriebssysteme Thema: Kopieren einer Datei unter der Kontrolle von Semaphoren Versuchsziele Konzepte der parallelen Programmierung

Mehr

Schritt 1 - Ein Spielfeld

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

Mehr

Thread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java

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

Mehr

Praktikum aus Softwareentwicklung 2, Stunde 5

Praktikum aus Softwareentwicklung 2, Stunde 5 Praktikum aus Softwareentwicklung 2, Stunde 5 Lehrziele/Inhalt 1. Threads Threads Threads sind parallele, oder auf Rechnern mit nur einer CPU quasi-parallele, Programmabläufe in Java. Sie können beispielsweise

Mehr

12. Threads in Java. Sequentielle Abarbeitung (2) Beispiel: Thread (1) Sequentielle Abarbeitung (1)

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

Mehr

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch Einführung in die Programmierung für Nebenfach Medieninformatik Beat Rossmy, Michael Kirsch Direct Feedback - Socrative Eure Mitarbeit ist uns wichtig! Installiert euch dazu die kostenlose App Socrative

Mehr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr 3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,

Mehr

Nebenläufige Programmierung in Java: Threads

Nebenläufige Programmierung in Java: Threads Nebenläufige Programmierung in Java: Threads Wahlpflicht: Fortgeschrittene Programmierung in Java Jan Henke HAW Hamburg 10. Juni 2011 J. Henke (HAW) Threads 10. Juni 2011 1 / 18 Gliederung 1 Grundlagen

Mehr

Synchronisation in Java. Invisible Web

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

Mehr

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009 Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009 Fabian Birzele, LMU Institut für Informatik, Lehrstuhl für Praktische Informatik und Bioinformatik, 2008: Programmierpraktikum 1 Ziele

Mehr

Parallele und verteilte Anwendungen in Java

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

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Java Concurrency Utilities

Java Concurrency Utilities Java Concurrency Utilities Java unterstützt seit Java 1.0 Multithreading Java unterstützt das Monitorkonzept mittels der Schlüsselworte synchronized und volatile sowie den java.lang.object Methoden wait(),

Mehr

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

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

Mehr

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java 9 Übungen: Applets Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java 1. Java-Applet mit Text 2. Java-Applet mit Bild und Text 3. Java-Applet mit Grafik 9 Applets 4. Java-Applet

Mehr

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

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

Mehr

Zeichnen und animieren

Zeichnen und animieren Zeichnen und animieren Grundlage bildet wieder die Klasse Graphics Ein Objekt der Klasse Graphics wird immer der paint Methode übergeben public void paint (Graphics g) Auch außerhalb von paint kann Graphics

Mehr

Threading. Arthur Zaczek. Aug 2015

Threading. Arthur Zaczek. Aug 2015 Arthur Zaczek Aug 2015 1 Threading 1.1 Motivation Threading erlaubt die gleichzeitige Ausführung von mehreren Programmteilen. mehrere gleichzeitige Anfragen: Webserver, Datenbank (zu) lange laufende Berechnungen:

Mehr

Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread

Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Dezentrale Kontrolle: Aktive Objekte Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Passive Objekte Bieten Dienste auf Abruf an: - eine Zahl von der Konsole

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung in Java Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception

Mehr

Nebenläufigkeit mit Java

Nebenläufigkeit mit Java Nebenläufigkeit mit Java Einheit 03: Synchronisation Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Synchronisation von Threads Locks Java Monitor-Konzept Lock Freigabe Zusammenspiel

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

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

Mehr

Nebenläufigkeit in Java

Nebenläufigkeit in Java Nebenläufigkeit in Java Prof. Dr. Margarita Esponda Prof. Dr. Margarita Esponda 1 Gliederung der Vorlesung - Konzepte der Nebenläufigkeit - Threads in Java - Synchronisationsprobleme - Klassische Lösungen

Mehr

Java I Vorlesung Nebenläufigkeit

Java I Vorlesung Nebenläufigkeit Java I Vorlesung 10 Nebenläufigkeit 28.6.2004 Threads Synchronisation Deadlocks Thread-Kommunikation Innere Klassen Anonyme Klassen Nebenläufigkeit http://java.sun.com/docs/books/tutorial/essential/threads/

Mehr

Universität Potsdam Institut für Informatik Sommersemester Programmierung. Lehrblatt Woche 11

Universität Potsdam Institut für Informatik Sommersemester Programmierung. Lehrblatt Woche 11 Universität Potsdam Institut für Informatik Sommersemester 2014 Programmierung Lehrblatt Woche 11 1 Applets In den letzten Wochen haben Sie die graphische Programmierung kennengelernt. Um Java-Programme

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. NumberFormatException

Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. NumberFormatException Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. Beispiel: NumberFormatException public class Adding extends MiniJava { public static void main(string[] args) { int

Mehr

Versuchsziele. Grundlagen. Überblick: FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem. 3.

Versuchsziele. Grundlagen. Überblick: FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem. 3. Hochschule Harz 3. Labor Threads FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem Versuchsziele Vertiefung im Verständnis der Thread- und Semaphor-Programmierung. Grundlagen

Mehr

Klausur zur Informatik A WS 2001/2002 Name: Korrektor: Punkte: a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme.

Klausur zur Informatik A WS 2001/2002 Name: Korrektor: Punkte: a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme. Aufgabe 1 a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme. Drei0 ::= 0 3 6 9 Drei1 ::= 1 4 7 Drei2 ::= 2 5 8 Drei ::= Drei0 Drei0 Drei1 Drei2 Drei2 Drei1 b) Gegeben sei

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Ausgewählte Implementierungsprobleme

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,

Mehr

3 Objektorientierte Konzepte in Java

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

Mehr

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 4

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 4 Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing.Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP JAVA 4 IV. Threads, Audiodateien, Bilder, Datumsfunktion, Aufruf

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 11 F. Forster,

Mehr

Nebenläufige Programmierung I

Nebenläufige Programmierung I Nebenläufige Programmierung I Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Piotr Kosiuczenko, Dirk Pattinson 07/03 Ziele 2 Grundlegende Begriffe der nebenläufigen Programmierung verstehen lernen

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt 26.03.2014 tobias.witt@hhu.de 25.12.01.30 Bürozeiten: 09 Uhr - 12 Uhr FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert

Mehr

Nebenläufigkeit in Java. Prof. Dr. Margarita Esponda

Nebenläufigkeit in Java. Prof. Dr. Margarita Esponda Nebenläufigkeit in Java Prof. Dr. Margarita Esponda Gliederung der Vorlesung - Konzepte der Nebenläufigkeit -Threads in Java - Synchronisationsprobleme - Klassische Lösungen -Semaphoren - Monitore - Lebenszyklus

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 17. JAVA Kommunikation von Threads 1 Motivation

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Variablen manipulieren per JDI

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

Mehr

Einführung in die Programmierung Blockkurs Java

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()

Mehr

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. 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

Mehr

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Probeklausur: Programmierung WS04/05

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,

Mehr

Einstieg in die Informatik mit Java

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

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

16. Parallelität: Threads

16. Parallelität: Threads Schwerpunkte 16. Parallelität: Threads Java-Beispiele: ThreadBasicTest.java ThreadSleep.java ThreadJoin.java SpotTest.java Leichtgewichtige und schwergewichtige Prozesse Threads: nutzerprogrammierte Parallelität

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

3 Objektorientierte Konzepte in Java

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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions Kapitel 10 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Exceptions Behandlung von Exceptions Verschiedene Exceptions Mehrere catch-anweisungen Der finally-block WS

Mehr

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010 Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung Prof. R. Westermann Endterm Klausur zu Informatik I 20. Februar 2010 ˆ Die Arbeitszeit beträgt 120

Mehr

Parallele Programmierung in Java

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

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Klausur Software-Entwicklung September 00

Klausur Software-Entwicklung September 00 Aufgabe 1: Wahrheitstafeln ausgeben (ca. 8 Punkte) Matrikelnr : Ergänzen Sie in folgendem Programm, eine rekursive Funktion, die eine Boole'sche Wahrheitstafel für N Variablen ausgibt. Die Zahl N soll

Mehr

Beispiel für überladene Methode

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

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Verteilte Systeme CS5001

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,

Mehr

Images. Kommen auf zweierlei Weise zur Anwendung. Darstellung von Pixelbildern(.jpg,.gif,.png) Bilden die Grundlage für Offscreendrawing

Images. Kommen auf zweierlei Weise zur Anwendung. Darstellung von Pixelbildern(.jpg,.gif,.png) Bilden die Grundlage für Offscreendrawing Graphics Klasse, die alle grundlegenden Methoden zum Zeichnen und Schreiben bereitstellt (draw -Methoden, Methoden zu Fonts und Colors) Bereitstellung eines Graphics-Objektes durch das AWT bei Aufruf der

Mehr

3. Anweisungen und Kontrollstrukturen

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

Mehr

Threads Einführung. Multitasking/Multiprozessing. Multiprozessing. Einführung. Prozess

Threads Einführung. Multitasking/Multiprozessing. Multiprozessing. Einführung. Prozess s Einführung Einführung in Prozesse und s Single- und Multithreading in Java Java s: Erzeugung, Methoden und Zustände sicherheit Einführung 2 von 45 Einführung Multitasking/Multiprozessing Multiprozessing

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

Mehr

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der

Mehr

Java Real-Time Specification

Java Real-Time Specification Ausgewählte Kapitel eingebetteter Systeme Java Real-Time Specification Tobias Distler 05.07.2006 Java und Echtzeit? Problem Nichtdeterministisches Verhalten der Garbage Collection Weitere Nachteile Scheduling

Mehr

Nebenläufige Programmierung I

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

Mehr

Probeklausur Informatik 2 Sommersemester 2013

Probeklausur Informatik 2 Sommersemester 2013 Probeklausur Informatik 2 Sommersemester 2013 1 Probeklausur Informatik 2 Sommersemester 2013 Name: Matrikelnummer: Hilfsmittel: Es sind alle schriftlichen Unterlagen, aber keine elektronischen Hilfsmittel

Mehr

Java Kurzreferenz Für Fortgeschrittene

Java Kurzreferenz Für Fortgeschrittene Java Kurzreferenz Für Fortgeschrittene 1. Initialisierung von Applets: Die Methode init Wenn ein Applet gestartet wird, werden immer zwei Methoden aufgerufen. Diese heissen init und start. Um gewisse Berechnungen

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

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

Mehr

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich. Felder Felder - Arrays Variable gleichen Types können in Feldern (array) zusammengefasst werden. Typ[] feldname; oder Typ feldname[]; dabei kann unter Benutzung des new-operators gleich die Dimension zugewiesen

Mehr

Überblick. Verteilte Systeme - Übung. Was ist ein Thread? Threads in Java. Multithreading in Java Threads Synchronisation Koordinierung

Überblick. Verteilte Systeme - Übung. Was ist ein Thread? Threads in Java. Multithreading in Java Threads Synchronisation Koordinierung Überblick Verteilte Systeme - Übung Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de Sommersemester 2009

Mehr

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Appletprogrammierung

Appletprogrammierung Appletprogrammierung 362 Übersicht zum Vorlesungsinhalt zeitliche Abfolge und Inhalte können variieren Appletprogrammierung HTML Methoden eines Applets AppletViewer Applikation zu Applet Flackernde Applets

Mehr

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September

Mehr