Nebenläufige Programmierung in Java: Threads

Größe: px
Ab Seite anzeigen:

Download "Nebenläufige Programmierung in Java: Threads"

Transkript

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

2 Gliederung 1 Grundlagen Wiederholung: Threadgrundlagen Einfache Threads in Java 2 Fortgeschrittene Konzepte Executor Synchronisation J. Henke (HAW) Threads 10. Juni / 18

3 Gliederung 1 Grundlagen Wiederholung: Threadgrundlagen Einfache Threads in Java 2 Fortgeschrittene Konzepte Executor Synchronisation J. Henke (HAW) Threads 10. Juni / 18

4 Definition einen Threads Definition Ein Thread ist ein Programmteil, welcher parallel zum dem übrigen Programm ausgeführt wird, über einen eigenen Stack verfügt und außer diesem alle Ressourcen mit dem restlichen Prozess teilt. J. Henke (HAW) Threads 10. Juni / 18

5 Definition einen Threads Definition Ein Thread ist ein Programmteil, welcher parallel zum dem übrigen Programm ausgeführt wird, über einen eigenen Stack verfügt und außer diesem alle Ressourcen mit dem restlichen Prozess teilt. Zu beachten ist: Dieselbe Codezeile kann simultan von mehreren Threads ausgeführt werden. J. Henke (HAW) Threads 10. Juni / 18

6 Definition einen Threads Definition Ein Thread ist ein Programmteil, welcher parallel zum dem übrigen Programm ausgeführt wird, über einen eigenen Stack verfügt und außer diesem alle Ressourcen mit dem restlichen Prozess teilt. Zu beachten ist: Dieselbe Codezeile kann simultan von mehreren Threads ausgeführt werden. Variablen auf dem Heap sind im Allgemeinen nicht threadspezfisch. J. Henke (HAW) Threads 10. Juni / 18

7 Vorteil von Multithreaded Anwendungen Bessere Ausnutzung von Wartepausen, kein busy waiting J. Henke (HAW) Threads 10. Juni / 18

8 Vorteil von Multithreaded Anwendungen Bessere Ausnutzung von Wartepausen, kein busy waiting insbesondere bei I/O-Operationen wichtig J. Henke (HAW) Threads 10. Juni / 18

9 Vorteil von Multithreaded Anwendungen Bessere Ausnutzung von Wartepausen, kein busy waiting insbesondere bei I/O-Operationen wichtig Bessere Ausnutzung heutiger symmetrischer Multiprozessorsysteme (SMP) J. Henke (HAW) Threads 10. Juni / 18

10 Vorteil von Multithreaded Anwendungen Bessere Ausnutzung von Wartepausen, kein busy waiting insbesondere bei I/O-Operationen wichtig Bessere Ausnutzung heutiger symmetrischer Multiprozessorsysteme (SMP) Entkoppelung verschiedener Programmteile möglich, z.b.: J. Henke (HAW) Threads 10. Juni / 18

11 Vorteil von Multithreaded Anwendungen Bessere Ausnutzung von Wartepausen, kein busy waiting insbesondere bei I/O-Operationen wichtig Bessere Ausnutzung heutiger symmetrischer Multiprozessorsysteme (SMP) Entkoppelung verschiedener Programmteile möglich, z.b.: asynchrone Reaktion auf Events J. Henke (HAW) Threads 10. Juni / 18

12 Vorteil von Multithreaded Anwendungen Bessere Ausnutzung von Wartepausen, kein busy waiting insbesondere bei I/O-Operationen wichtig Bessere Ausnutzung heutiger symmetrischer Multiprozessorsysteme (SMP) Entkoppelung verschiedener Programmteile möglich, z.b.: asynchrone Reaktion auf Events Erzeuger-Verbraucher Muster J. Henke (HAW) Threads 10. Juni / 18

13 Gliederung 1 Grundlagen Wiederholung: Threadgrundlagen Einfache Threads in Java 2 Fortgeschrittene Konzepte Executor Synchronisation J. Henke (HAW) Threads 10. Juni / 18

14 Erzeugung eines neuen Threads Welche Ausgabe ergibt das folgende Codesegment? 1 Runnable torun = new Runnable ( ) { 2 O v e r r i d e 4 p u b l i c v o i d r u n ( ) 5 { 6 f o r ( i n t i = 0 ; i < 1 0 ; i ++) 7 { 8 System. out. p r i n t l n ( i ) ; 9 } 10 } 11 } ; Thread thread1 = new Thread ( torun ) ; 14 t h r e a d 1. s t a r t ( ) ; 15 Thread thread2 = new Thread ( torun ) ; 16 t h r e a d 2. s t a r t ( ) ; J. Henke (HAW) Threads 10. Juni / 18

15 Erzeugung eines neuen Threads Welche Ausgabe ergibt das folgende Codesegment? 1 Runnable torun = new Runnable ( ) { 2 O v e r r i d e 4 p u b l i c v o i d r u n ( ) 5 { 6 f o r ( i n t i = 0 ; i < 1 0 ; i ++) 7 { 8 System. out. p r i n t l n ( i ) ; 9 } 10 } 11 } ; Thread thread1 = new Thread ( torun ) ; 14 t h r e a d 1. s t a r t ( ) ; 15 Thread thread2 = new Thread ( torun ) ; 16 t h r e a d 2. s t a r t ( ) ; J. Henke (HAW) Threads 10. Juni / 18

16 Thread implementiert Runnable Die Klasse Thread implementiert selbst das Interface Runnable J. Henke (HAW) Threads 10. Juni / 18

17 Thread implementiert Runnable Die Klasse Thread implementiert selbst das Interface Runnable Alle Konstruktoren sind doppelt vorhanden, jeweils mit und ohne Runnable als Argument J. Henke (HAW) Threads 10. Juni / 18

18 Thread implementiert Runnable Die Klasse Thread implementiert selbst das Interface Runnable Alle Konstruktoren sind doppelt vorhanden, jeweils mit und ohne Runnable als Argument Thread erweitern und run() überschreiben J. Henke (HAW) Threads 10. Juni / 18

19 Grundlegende Steuerung Die Klasse java.lang.thread bietet eine Reihe von Methoden an, um das Verhalten des (aktuellen) Threads zu beinflussen: J. Henke (HAW) Threads 10. Juni / 18

20 Grundlegende Steuerung Die Klasse java.lang.thread bietet eine Reihe von Methoden an, um das Verhalten des (aktuellen) Threads zu beinflussen: Die statischen Methoden beinflussen den aktuellen Thread, welcher den Code aktuell ausführt, dazu zählen unter anderem: J. Henke (HAW) Threads 10. Juni / 18

21 Grundlegende Steuerung Die Klasse java.lang.thread bietet eine Reihe von Methoden an, um das Verhalten des (aktuellen) Threads zu beinflussen: Die statischen Methoden beinflussen den aktuellen Thread, welcher den Code aktuell ausführt, dazu zählen unter anderem: Thread.currentThread() liefert die Referenz auf der aktuellen Thread. J. Henke (HAW) Threads 10. Juni / 18

22 Grundlegende Steuerung Die Klasse java.lang.thread bietet eine Reihe von Methoden an, um das Verhalten des (aktuellen) Threads zu beinflussen: Die statischen Methoden beinflussen den aktuellen Thread, welcher den Code aktuell ausführt, dazu zählen unter anderem: Thread.currentThread() liefert die Referenz auf der aktuellen Thread. Thread.yield() gibt den Rest der aktuell zugeteilten Rechenzeit ab. (Verhalten ist nach Spezifikation nicht garantiert) J. Henke (HAW) Threads 10. Juni / 18

23 Grundlegende Steuerung Die Klasse java.lang.thread bietet eine Reihe von Methoden an, um das Verhalten des (aktuellen) Threads zu beinflussen: Die statischen Methoden beinflussen den aktuellen Thread, welcher den Code aktuell ausführt, dazu zählen unter anderem: Thread.currentThread() liefert die Referenz auf der aktuellen Thread. Thread.yield() gibt den Rest der aktuell zugeteilten Rechenzeit ab. (Verhalten ist nach Spezifikation nicht garantiert) Thread.sleep(long)/Thread.sleep(long, int) legt den aktuellen Thread für die angegebene Dauer schlafen. J. Henke (HAW) Threads 10. Juni / 18

24 Grundlegende Steuerung Die Klasse java.lang.thread bietet eine Reihe von Methoden an, um das Verhalten des (aktuellen) Threads zu beinflussen: Die statischen Methoden beinflussen den aktuellen Thread, welcher den Code aktuell ausführt, dazu zählen unter anderem: Thread.currentThread() liefert die Referenz auf der aktuellen Thread. Thread.yield() gibt den Rest der aktuell zugeteilten Rechenzeit ab. (Verhalten ist nach Spezifikation nicht garantiert) Thread.sleep(long)/Thread.sleep(long, int) legt den aktuellen Thread für die angegebene Dauer schlafen. Wenn der Thread vor dem Ablauf dieser Zeit per interrupt() geweckt wurde, wird eine (checked) InterruptedException ausgelöst. J. Henke (HAW) Threads 10. Juni / 18

25 Grundlegende Steuerung - Teil 2 Die nicht-statischen Methoden beeinflussen den Thread, auf dessen Referenz sie aufgerufen werden, dazu zählen unter anderem: J. Henke (HAW) Threads 10. Juni / 18

26 Grundlegende Steuerung - Teil 2 Die nicht-statischen Methoden beeinflussen den Thread, auf dessen Referenz sie aufgerufen werden, dazu zählen unter anderem: interrupt() weckt aktuell schlafende Threads. J. Henke (HAW) Threads 10. Juni / 18

27 Grundlegende Steuerung - Teil 2 Die nicht-statischen Methoden beeinflussen den Thread, auf dessen Referenz sie aufgerufen werden, dazu zählen unter anderem: interrupt() weckt aktuell schlafende Threads. join() der aktuell laufende Thread wartet, bis der referenzierte Thread abgearbeitet ist. J. Henke (HAW) Threads 10. Juni / 18

28 Grundlegende Steuerung - Teil 2 Die nicht-statischen Methoden beeinflussen den Thread, auf dessen Referenz sie aufgerufen werden, dazu zählen unter anderem: interrupt() weckt aktuell schlafende Threads. join() der aktuell laufende Thread wartet, bis der referenzierte Thread abgearbeitet ist. Getter und Setter für verschiedene Eigenschaften. J. Henke (HAW) Threads 10. Juni / 18

29 Grundlegende Steuerung - Teil 2 Die nicht-statischen Methoden beeinflussen den Thread, auf dessen Referenz sie aufgerufen werden, dazu zählen unter anderem: interrupt() weckt aktuell schlafende Threads. join() der aktuell laufende Thread wartet, bis der referenzierte Thread abgearbeitet ist. Getter und Setter für verschiedene Eigenschaften. stop() (deprecated!) bricht diesen Thread abrupt ab, kann daher zu inkonsitenen Verhalten führen und ist daher zu vermeiden. J. Henke (HAW) Threads 10. Juni / 18

30 Beenden der JVM bei Benutzung von Threads Die JVM (und damit das Programm) beendet sich nur wenn alle 1 Threads beendet sind! 1 (nicht-dämon) J. Henke (HAW) Threads 10. Juni / 18

31 Beenden der JVM bei Benutzung von Threads Die JVM (und damit das Programm) beendet sich nur wenn alle 1 Threads beendet sind! Hat man einen oder mehrere Threads, welche in einer Endlosschleife auf neue Arbeit warten, so muss man zu Beenden des Programms eine der folgenden Möglichkeiten implementieren: 1 (nicht-dämon) J. Henke (HAW) Threads 10. Juni / 18

32 Beenden der JVM bei Benutzung von Threads Die JVM (und damit das Programm) beendet sich nur wenn alle 1 Threads beendet sind! Hat man einen oder mehrere Threads, welche in einer Endlosschleife auf neue Arbeit warten, so muss man zu Beenden des Programms eine der folgenden Möglichkeiten implementieren: Jeden Thread einzeln beenden (z.b. über interrupt()) 1 (nicht-dämon) J. Henke (HAW) Threads 10. Juni / 18

33 Beenden der JVM bei Benutzung von Threads Die JVM (und damit das Programm) beendet sich nur wenn alle 1 Threads beendet sind! Hat man einen oder mehrere Threads, welche in einer Endlosschleife auf neue Arbeit warten, so muss man zu Beenden des Programms eine der folgenden Möglichkeiten implementieren: Jeden Thread einzeln beenden (z.b. über interrupt()) Über System.exit(int) die JVM hart beenden. 1 (nicht-dämon) J. Henke (HAW) Threads 10. Juni / 18

34 Beenden der JVM bei Benutzung von Threads Die JVM (und damit das Programm) beendet sich nur wenn alle 1 Threads beendet sind! Hat man einen oder mehrere Threads, welche in einer Endlosschleife auf neue Arbeit warten, so muss man zu Beenden des Programms eine der folgenden Möglichkeiten implementieren: Jeden Thread einzeln beenden (z.b. über interrupt()) Über System.exit(int) die JVM hart beenden. Diese Threads vor dem starten als Dämonen kennzeichnen (setdemon(true)), ein Dämonthread hindert die JVM nicht daran sich selbst zu beenden. 1 (nicht-dämon) J. Henke (HAW) Threads 10. Juni / 18

35 Gliederung 1 Grundlagen Wiederholung: Threadgrundlagen Einfache Threads in Java 2 Fortgeschrittene Konzepte Executor Synchronisation J. Henke (HAW) Threads 10. Juni / 18

36 Der Executor Threads lassen sich nur einmal und nur mit einem einzigen Runnable starten. Auch lässt sich der Startzeitpunkt nicht wählen. J. Henke (HAW) Threads 10. Juni / 18

37 Der Executor Threads lassen sich nur einmal und nur mit einem einzigen Runnable starten. Auch lässt sich der Startzeitpunkt nicht wählen. Seit Java 1.5 gibt es eine Lösung, welche dies Einschränkungen beseitigt: Das Interface java.util.concurrent.executer bzw. java.util.concurrent.executerservice. J. Henke (HAW) Threads 10. Juni / 18

38 Der Executor Threads lassen sich nur einmal und nur mit einem einzigen Runnable starten. Auch lässt sich der Startzeitpunkt nicht wählen. Seit Java 1.5 gibt es eine Lösung, welche dies Einschränkungen beseitigt: Das Interface java.util.concurrent.executer bzw. java.util.concurrent.executerservice. Mit execute(runnable) kann in implementierenden Klassen ein Runnable zur Bearbeitung eingereiht werden. J. Henke (HAW) Threads 10. Juni / 18

39 Der Executor Threads lassen sich nur einmal und nur mit einem einzigen Runnable starten. Auch lässt sich der Startzeitpunkt nicht wählen. Seit Java 1.5 gibt es eine Lösung, welche dies Einschränkungen beseitigt: Das Interface java.util.concurrent.executer bzw. java.util.concurrent.executerservice. Mit execute(runnable) kann in implementierenden Klassen ein Runnable zur Bearbeitung eingereiht werden. Details hängen von der konkreten Implementierung ab. J. Henke (HAW) Threads 10. Juni / 18

40 Der Executor Threads lassen sich nur einmal und nur mit einem einzigen Runnable starten. Auch lässt sich der Startzeitpunkt nicht wählen. Seit Java 1.5 gibt es eine Lösung, welche dies Einschränkungen beseitigt: Das Interface java.util.concurrent.executer bzw. java.util.concurrent.executerservice. Mit execute(runnable) kann in implementierenden Klassen ein Runnable zur Bearbeitung eingereiht werden. Details hängen von der konkreten Implementierung ab. java.util.concurrent.executors bietet Fabrikmethoden für verschiedene Implementierungen J. Henke (HAW) Threads 10. Juni / 18

41 Gliederung 1 Grundlagen Wiederholung: Threadgrundlagen Einfache Threads in Java 2 Fortgeschrittene Konzepte Executor Synchronisation J. Henke (HAW) Threads 10. Juni / 18

42 Warum synchronisieren Vielfach müssen Threads Daten mit dem übrigen Programm austauschen. Das Laufzeitverhalten von Threads ist aber nicht berechenbar, d.h. nach jeder verarbeiteten Maschienoperation kann ein Thread unterbrochen werden. J. Henke (HAW) Threads 10. Juni / 18

43 Warum synchronisieren Vielfach müssen Threads Daten mit dem übrigen Programm austauschen. Das Laufzeitverhalten von Threads ist aber nicht berechenbar, d.h. nach jeder verarbeiteten Maschienoperation kann ein Thread unterbrochen werden. Da Schreibeoperationen in der Regel aus mehrern Maschienoperationen bestehen, müssen diese besonders geschützt werden, um inkonsistente (d.h. nur teilweise geschriebene) Daten zu vermeiden. J. Henke (HAW) Threads 10. Juni / 18

44 Das Schlüsselwort synchronized Eine einfache Methode Synchronisation in Java zu realisieren, ist das Schlüsselwort synchronized in der Definition einer Methode. J. Henke (HAW) Threads 10. Juni / 18

45 Das Schlüsselwort synchronized Eine einfache Methode Synchronisation in Java zu realisieren, ist das Schlüsselwort synchronized in der Definition einer Methode. Jedoch ist Vorsicht geboten, dies kann bei langen Methoden den Vorteil der Nebenläufigkeit zunichte machen. In dem Fall Nutzung anderer Möglichkeiten -> Literatur J. Henke (HAW) Threads 10. Juni / 18

46 Das Schlüsselwort synchronized Eine einfache Methode Synchronisation in Java zu realisieren, ist das Schlüsselwort synchronized in der Definition einer Methode. Jedoch ist Vorsicht geboten, dies kann bei langen Methoden den Vorteil der Nebenläufigkeit zunichte machen. In dem Fall Nutzung anderer Möglichkeiten -> Literatur synchronized sorgt dafür, dass zu jeder Zeit maximal ein Thread mit der Abarbeit eines Codesegments beschäftigt ist. J. Henke (HAW) Threads 10. Juni / 18

47 Das Schlüsselwort synchronized Eine einfache Methode Synchronisation in Java zu realisieren, ist das Schlüsselwort synchronized in der Definition einer Methode. Jedoch ist Vorsicht geboten, dies kann bei langen Methoden den Vorteil der Nebenläufigkeit zunichte machen. Beispiel In dem Fall Nutzung anderer Möglichkeiten -> Literatur synchronized sorgt dafür, dass zu jeder Zeit maximal ein Thread mit der Abarbeit eines Codesegments beschäftigt ist. p u b l i c s y n c h r o n i z e d v o i d somemethod ( ) { // h i e r h ä l t s i c h maximal e i n Thread g l e i c h z e i t i g a u f } J. Henke (HAW) Threads 10. Juni / 18

48 Collections API und Threads Bis auf Vector sind alle Collections nicht threadsicher! J. Henke (HAW) Threads 10. Juni / 18

49 Collections API und Threads Bis auf Vector sind alle Collections nicht threadsicher! Die Utilityklasse Collections biete jedoch Methoden, um auf eine bestehende Collection eine Synchronisierte Sicht zu erhalten. Anschließend müssen alle Zugriffe über diese Sicht auf die Collection abgewickelt werden. J. Henke (HAW) Threads 10. Juni / 18

50 Collections API und Threads Beispiel Bis auf Vector sind alle Collections nicht threadsicher! Die Utilityklasse Collections biete jedoch Methoden, um auf eine bestehende Collection eine Synchronisierte Sicht zu erhalten. Anschließend müssen alle Zugriffe über diese Sicht auf die Collection abgewickelt werden. L i s t <S t r i n g > m y L i s t = C o l l e c t i o n s. s y n c h r o n i z e d L i s t ( new L i n k e d L i s t <S t r i n g >() ) ; J. Henke (HAW) Threads 10. Juni / 18

51 Ende Vielen Dank für die Aufmerksamkeit. Sind noch Fragen offen? J. Henke (HAW) Threads 10. Juni / 18

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

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

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

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

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

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

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

Lehr- und Forschungsgebiet Informatik 2. Proseminar-Arbeit. über das Thema Multithreading und Synchronisation in Java. Jens Bürger

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:

Mehr

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

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

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

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

Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012

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

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

6. Tutorium zu Softwaretechnik I

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

Mehr

Betriebssysteme. Wintersemester 2015. Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com

Betriebssysteme. Wintersemester 2015. Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com Betriebssysteme Wintersemester 2015 Kapitel 2 Prozess und Threads Patrick Kendzo ppkendzo@gmail.com Programm Inhalt Einleitung Prozesse und Threads Speicherverwaltung Eingabe und Ausgabe Dateisysteme Zusammenfassung

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

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN:

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN: Inhaltsverzeichnis Carsten Vogt Nebenläufige Programmierung Ein Arbeitsbuch mit UNIX/Linux und Java ISBN: 978-3-446-42755-6 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42755-6

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

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4 Inhaltsverzeichnis TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA... 1 1 GRUNDLAGEN DER PROGRAMMIERUNG... 4 1.1 Das erste Java-Programm... 4 1.2 Programme und ihre Abläufe... 6 1.3 Entwurf mit Nassi-Shneiderman-Diagrammen...

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

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

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

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 (uli@wuraffel.de) Möglichkeiten, Threads zu definieren Bildung einer

Mehr

Model-View-Controller

Model-View-Controller Software Design Pattern Model-View-Controller Michael Lühr Gliederung Einführung und Problemstellung Ansatz durch MVC Detaillierte Darstellung der Komponenten Model View Controller Vor- und Nachteile Zusammenfassung

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

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

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

Mehr

Präsentation Interfaces

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.

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Cluster-Praktikum Sommersemester 2007 Transparent Replizierte Objekte in JavaParty Institut für Programmstrukturen und Datenorganisation

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

Monitore. Klicken bearbeiten

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

Mehr

Zusammenfassung Modul 223

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

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

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

Mehr

Domänenmodell: Fadenkommunikation und -synchronisation

Domänenmodell: Fadenkommunikation und -synchronisation Domänenmodell: Fadenkommunikation und -synchronisation Alexander Humphreys, Reinhard Rösch, Fabian Scheler 15. Mai 2003 Inhaltsverzeichnis 1 Domänendefinition 1 2 Domänenlexikon 1 3 Konzeptmodelle 4 4

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

Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de

Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de Multi-Threading Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de Einführung in Threads Threads synchronisieren ThreadPools Thread = unabhängiger Ausführungspfad, der gleichzeitig

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

Einführung in AOP. Rico Schiekel - 012816 rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung

Einführung in AOP. Rico Schiekel - 012816 rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung Einführung in AOP Informatikseminar Rico Schiekel - 012816 rschiekel@web.de Fachhochschule Ravensburg Weingarten Hochschule für Technik und Sozialwesen Einführung in AOP Agenda Kernproblem der Objekt Orientierung

Mehr

Informatik II Übung 6 Gruppe 7

Informatik II Übung 6 Gruppe 7 Informatik II Übung 6 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch DEBRIEFING Übung 5 2 U5A1-4 Im Prinzip alles richtig. Falls am Ende noch Zeit, dann Einsicht in die Best Of s 3 THEORIE Java Vererbung,

Mehr

Java Threads. Mutex, Race Condition, Deadlock, Starvation und Co.. Prof. Dr. Nikolaus Wulff

Java Threads. Mutex, Race Condition, Deadlock, Starvation und Co.. Prof. Dr. Nikolaus Wulff Java Threads Mutex, Race Condition, Deadlock, Starvation und Co.. Prof. Dr. Nikolaus Wulff Java Threads Threads sind leichtgewichtige Prozesse. Sie benötigen keine Betriebsystemressourcen wie ein echter

Mehr

Grundkonzepte java.util.list

Grundkonzepte java.util.list Grundkonzepte java.util.list Eine List ist eine Spezialisierung einer allgemeinen Ansammlung (Collection): Lineare Ordnung ist definiert Zugriff über Rang oder Position Volle Kontrolle wo eingefügt bzw.

Mehr

LeJOS: Mindstorms in Java programmieren

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

Mehr

Operating System Kernels

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

Mehr

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe Java: Eine Übersicht Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe Allgemeines Objektorientiert Syntaxfamilie von C/C++ Statisch getypt Entwickelt von Sun Microsystems class

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

Inhaltsverzeichnis. Rainer Oechsle. Parallele und verteilte Anwendungen in Java ISBN: Weitere Informationen oder Bestellungen unter

Inhaltsverzeichnis. Rainer Oechsle. Parallele und verteilte Anwendungen in Java ISBN: Weitere Informationen oder Bestellungen unter sverzeichnis Rainer Oechsle Parallele und verteilte Anwendungen in Java ISBN: 978-3-446-42459-3 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42459-3 sowie im Buchhandel.

Mehr

Java RMI Remote Method Invocation

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

Mehr

Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff

Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff Die Java Stream API Funktionale Programmierung mit der Stream API des JDK 1.8 Prof. Dr. Nikolaus Wulff Funktionale Programmierung Neben der Collection API mit default Methoden ist als weitere Neuerung

Mehr

Enumerations und innere Klassen

Enumerations und innere Klassen Enumerations und innere Klassen Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 14: Generics Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Generische Klassen (Generics) Motivation Java Typ-Prüfung Warum also Generics? Generische

Mehr

Kapitel 4. Monitore und wechselseitiger Ausschluss

Kapitel 4. Monitore und wechselseitiger Ausschluss Seite 1 Kapitel 4 Monitore und wechselseitiger Ausschluss Prof. Dr. Rolf Hennicker 28.05.2015 4.1 Interferenzen Seite 2 Parallel ablaufende Prozesse können sich gegenseitig (störend) beeinflussen. Beispiel

Mehr

Java-Programmierung. Remote Method Invocation - RMI

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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Das Java-Speichermodell Prof. Dr. Walter F. Tichy Dr. Victor Pankratius Ali Jannesari Geschichte des Speichermodells Kapitel 17 der Java-Sprachdefinition

Mehr

Informatik B - Objektorientierte Programmierung in Java. Vorlesung 21: Threads 2. Inhalt

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

Mehr

Parallele und verteilte Anwendungen in Java

Parallele und verteilte Anwendungen in Java Rainer Oechsle Parallele und verteilte Anwendungen in Java ISBN-10: 3-446-40714-6 ISBN-13: 978-3-446-40714-5 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40714-5

Mehr

Techniken der Projektentwicklung

Techniken der Projektentwicklung Themen Threading Netzwerk Techniken der Projektentwicklung Threading & Netzwerkprogrammierung Ingo Lütkebohle Termin 13 Ingo Lütkebohle Techniken der Projektentwicklung 1 Themen heute Themen Threading

Mehr

Kapitel 6. Vererbung

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

Mehr

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

Kapitel 6. Vererbung

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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

Mehr

Kapitel 5. Monitore und Synchronisationsbedingungen

Kapitel 5. Monitore und Synchronisationsbedingungen Seite Kapitel 5 Monitore und Synchronisationsbedingungen Prof. Dr. Rolf Hennicker 5.6.24 5. Synchronisationsbedingungen Seite 2 Bisherige Verwendung von Monitoren: Verkapselung von Daten, Zugriffoperationen

Mehr

Architekturbeschreibung Koala Editor

Architekturbeschreibung Koala Editor Architekturbeschreibung Koala Editor Package: de.hsos.koala Enthält die Main Klasse. Klasse: Main Wird beim Start des Programms ausgeführt und öffnet ein neues Editor-Fenster. Package: de.hsos.koala.actions

Mehr

White Paper. Embedded Treiberframework. Einführung

White Paper. Embedded Treiberframework. Einführung Embedded Treiberframework Einführung White Paper Dieses White Paper beschreibt die Architektur einer Laufzeitumgebung für Gerätetreiber im embedded Umfeld. Dieses Treiberframework ist dabei auf jede embedded

Mehr

Effiziente Java Programmierung

Effiziente Java Programmierung Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen

Mehr

Der Scheduler von Windows Konzepte und Strategien

Der Scheduler von Windows Konzepte und Strategien Gliederung Der Scheduler von Windows Konzepte und Strategien Daniel Lohmann 1 Grundbegriffe 2 Eigenschaften des Schedulers Grundlegende Eigenschaften Prioritätenmodell Dynamische Prioritätenanpassungen

Mehr

Übung Betriebssysteme 11

Übung Betriebssysteme 11 Übung Betriebssysteme 11 Christian Motika Christian-Albrechts-Universität zu Kiel Institut für Informatik AG Echtzeitsysteme / Eingebettete Systeme Kiel, Germany 29-JAN-2013 CAU - WS 2012/13 Übung Betriebssysteme

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

Nebenläufigkeit. Motivation und Parallelität. Definitionen und Übersicht. Continuations und Koroutinen. Threads in Java.

Nebenläufigkeit. Motivation und Parallelität. Definitionen und Übersicht. Continuations und Koroutinen. Threads in Java. Nebenläufigkeit Motivation und Parallelität Definitionen und Übersicht Continuations und Koroutinen Threads in Java Erste Beispiele Motivation für Nebenläufigkeit Nebenläufigkeit = mehrere Kontrollflüsse

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

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

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

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

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

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

Inhaltsverzeichnis. 2.2 Grundlagen der UML... 41. 2.3 Zusammenfassung... 53

Inhaltsverzeichnis. 2.2 Grundlagen der UML... 41. 2.3 Zusammenfassung... 53 Vorwort......................................................... 13 1 Vorbereitungen.................................................. 17 1.1 JDK-Installation unter Windows................................

Mehr

Java Wireless Toolkit (JWT) Bei der Programmierung von Anwendungsprogrammen für mobile Endgeräte eignet sich die Verwendung des Java Wireless Toolkit.

Java Wireless Toolkit (JWT) Bei der Programmierung von Anwendungsprogrammen für mobile Endgeräte eignet sich die Verwendung des Java Wireless Toolkit. 1 Seminar zum Programmierprojekt Arbeitsbereich Technische Informatik Ausgabe: 30. April 2008 Anleitung B3 Einführung in die Entwicklungsumgebungen Allgemeines In dieser Aufgabe lernen wir die Entwicklungsumgebungen

Mehr

Sven Osterwald Concurrent Objects. Proseminar Parallele Programmierung in Java

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

Mehr

Repetitorium Informatik (Java)

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

Mehr

COPPER Best Practices

COPPER Best Practices COPPER Best Practices Version 1.0.1 Wann sollte man überhaupt COPPER verwenden? Allgemein genau dann, wenn man von der COPPER Notation oder den COPPER-Features profitieren kann. Ein wesentliches Feature

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Übungsblatt Nr. 10 Aufgabe 20: Code Verständnis Löse diese Aufgabe selbständig als Vorbereitung zur Übung auf dem Papier. a) Gib

Mehr

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

Seminararbeit. Java Thread Synchronisation

Seminararbeit. Java Thread Synchronisation Seminararbeit Java Thread Synchronisation Angelika Brückl (0055060) Java Thread Synchronisation 1 Inhaltsverzeichnis 1. Einleitung... 3 2. Allgemeines über Threading... 3 2.1. Was ist ein Thread?... 3

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Nebenläufigkeit in Java

Nebenläufigkeit in Java Nebenläufigkeit in Java Maurice Schoenmakers schoenma@informatik.tu muenchen.de Inhaltsverzeichnis 1 Einleitung... 2 2 Prozesse und Threads in Java... 2 2.1 Die Klasse Thread... 3 2.2 Der aktuelle Thread...

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

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH ARM Cortex-M Prozessoren Referat von Peter Voser Embedded Development GmbH SoC (System-on-Chip) www.embedded-development.ch 2 Instruction Sets ARM, Thumb, Thumb-2 32-bit ARM - verbesserte Rechenleistung

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Vgl. Oestereich Kap 2.7 Seiten 134-147

Vgl. Oestereich Kap 2.7 Seiten 134-147 Vgl. Oestereich Kap 2.7 Seiten 134-147 1 Sequenzdiagramme beschreiben die Kommunikation/Interaktion zwischen den Objekten (bzw. verschiedenen Rollen) eines Szenarios. Es wird beschrieben, welche Objekte

Mehr

9. Vorlesung Betriebssysteme

9. Vorlesung Betriebssysteme Dr. Christian Baun 9. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 1/39 9. Vorlesung Betriebssysteme Dr. Christian Baun Hochschule Mannheim Fakultät für Informatik wolkenrechnen@gmail.com Dr. Christian

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Asynchrone Webservices mit Axis 1.x in Java

Asynchrone Webservices mit Axis 1.x in Java Asynchrone Webservices mit Axis 1.x in Java 1. Übersicht Architektur Da Webservices nach relativ kurzen Timeouts Anfragen abgearbeitet haben müsse, sind komplexe Anfragen wie sie in der Bioinformatik üblich

Mehr

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Komponentenorientierte Software-Entwicklung. Seite 1 / 42 Seite 1 / 42 Wiederholung Messaging Java Messaging Service (JMS) Pub/Sub P2P Messaging Middleware XMPP-Protokoll Java API for XML-Processing (JAXP) Java API for XML-Binding Webservices / SOA Simple Object

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

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/

Mehr

RTEMS- Echtzeitbetriebssystem

RTEMS- Echtzeitbetriebssystem RTEMS- Echtzeitbetriebssystem Name: Hussein Hammoud Matrikel- Nr.: 230768 Studiengang: Technische Informatik Fach: Projekt Eingebettete Kommunikation Technische Universität Berlin Sommersemester 2006 RTEMS-

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

2. Hintergrundverarbeitung in Android: Services und Notifications

2. Hintergrundverarbeitung in Android: Services und Notifications 2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht 2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht: In Mobis 1: Threads; hier genauerer Blick auf Services

Mehr

Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE)

Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE) CNAM Wintersemester 2014 / 2015 Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE) Im Rahmen von: Betriebssysteme und nebenläufige Anwendungen Agenda Nebenläufigkeit in Java Anwendungen Basisfunktionen

Mehr

Schedulingund Thread-Ausführer

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

Mehr