Java Threads. von Gerhart Mende und Awad Fuad. Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 1

Größe: px
Ab Seite anzeigen:

Download "Java Threads. von Gerhart Mende und Awad Fuad. Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 1"

Transkript

1 Java Threads von Gerhart Mende und Awad Fuad Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 1

2 Einleitung Erzeugung und Start von Threads Synchronisation von Java Threads Signalmechanismus in Java Erweiterte Java-Synchronisationsmuster Thread Scheduling in Java Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 2

3 Einleitung Wozu sind Threads gut Um die Reaktionsfähigkeit einer Anwendung während einer langen laufenden Aufgabe zu verwalten Zur Aufhebung von einzeln abgrenzbaren Aufgaben zu ermöglichen. Einige Probleme sind untrennbar parallel Um den Status einer Ressource (z. B. DB) zu überwachen Einige APIs und Systeme verlangen bzw. fordern es (z. B. Swing) Um die Vorteile von mehreren Prozessoren zu nutzen. Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 3

4 Einleitung Anwendung Thread Wenn wir eine Applikation ausführen: Die JVM erzeugt ein Thread Objekt, deren Aufgabe durch die main () Methode definiert wird Die JVM startet den Thread Der Thread führt die Anweisungen des Programms nacheinander aus Nach dem Ausführen aller Anweisungen wird die Methode beendet und der Thread stirbt Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 4

5 Einleitung Mehrere Threads in einer Anwendung Jeder Thread verfügt über ein eigenes Laufzeit Stack Wenn zwei Threads die gleiche Methode ausführen, wird jeder Thread seine eigene Kopie der lokalen Variablen der Methode haben. Allerdings sehen alle Threads den gleichen dynamischen Speicher Zwei verschiedene Threads können auf das gleiche Objekt und die gleiche statische Felder gleichzeitig ( concurrently ) arbeiten Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 5

6 Einleitung Nebenläufigkeit vs. Parallelität Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 6

7 Einleitung Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 7

8 Erzeugung und Starten von Threads Thread Klassen können in Java auf zwei verschiedene Arten definiert werden: als Unterklasse der durch Implementierung Thread Klasse der Runnable Schnittstelle In beiden Fällen muss die Methode run() implementiert werden Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 8

9 Implementation von Threads Variante 1 Threads über die Schnittstelle Runnable implementieren: Z.B. zwei Threads, wobei einer zwanzigmal das aktuelle Datum und die Uhrzeit ausgibt und der andere einfach eine Zahl. Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 9

10 Implementation von Threads Variante 1 Direkter Aufruf von run() Sequenzielle Ausführung des Codes Parallele Ausführung: 1.) Erzeugung eines Thread Objekts 2.) Aufruf von start() Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 10

11 Implementation von Threads Variante 2 Erweiterung der Klasse Thread : Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 11

12 Implementation von Threads Variante 2 Einige Konstruktoren der Klasse java.lang.thread Thread ( ); // erzeugt ein leeres Thread Objekt mit automatisch // festgelegtem Namen Thread N Thread ( String name ); // erzeugt ein leeres Thread Objekt mit Namen // name Thread ( Runnable target ); // erzeugt zu Runnable Objektziel ein // Thread Objekt Thread ( Runnable target, String name ); // erzeugt zu Runnable Objektziel // ein Thread Objekt mit Namen // name Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 12

13 Implementation von Threads Variante 2 Einige Methoden der Klasse java.lang.thread void run() Methode Innerhalb der run() Methode befinden sich die potenziell parallel ausführbaren Aktivitäten eines Threads. void start() Methode Startet ein Thread und zwar: es wird Speicher für den Thread bereit gestellt und die run Methode wird aufgerufen Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 13

14 Implementation von Threads Variante 2 Einige Methoden der Klasse java.lang.thread void join() Methode Um auf die Beendigung eines oder mehrerer Threads zu warten, benutzt man die join() Methode. void join( long timeout ) der aufrufende Thread wird blockiert, die Blockierung wird aufgehoben, sobald der angegebene Thread beendet ist oder wenn die angegebene Zeit timeout abgelaufen ist Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 14

15 Implementation von Threads Variante 2 Weitere Methoden der Klasse java.lang.thread void sleep( int millis ) Methode Ein Thread kann mit der sleep() Methode für eine vorbestimmte Zeit in den Zustand "not runnable" versetzt werden. void yield() Methode zwingt den aktuell ausgeführten Thread zu pausieren und erlaubt die Weiterführung anderer Threads Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 15

16 Threads beenden Ein Thread ist beendet, wenn eine der nachfolgenden Bedingungen zutrifft: Die run() Methode wurde ohne Fehler beendet. In der run() Methode tritt eine Exception auf, die zum Beenden der Methode führt. Der Thread wurde von außen abgebrochen. Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 16

17 Erzeugung und Start von Threads Verglich der beiden Implementationen Ableiten von Thread Vorteil: Programmcode in run() kann die Methoden der Klasse Thread nutzen Nachteil: Da es in Java keine Mehrfachvererbung gibt, kann die Klasse nur Thread erweitern Implementieren der Runnable Schnittstelle Vorteil: Die Klasse kann von einer anderen, problemspezifischen Klasse erben Nachteil: Kann sich nur mit Umwegen selbst starten; allgemein: Thread-Methoden können nur über Umwege genutzt werden Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 17

18 Synchronisation von Java Threads Synchronisation von Threads ist erforderlich, um Threads Koordination zu steuern. Vor allem, um gleichzeitige Operationen an Daten zu verhindern Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 18

19 Synchronisation von Java Threads Wenn mehrere Threads auf gemeinsame Daten gleichzeitig schreiben wollen, entsteht dann die Gefahr von inkonsistenten Daten. Thread 1 Thread 2 Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 19

20 Synchronisation von Java Threads Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 20

21 Synchronisation von Java Threads Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 21

22 Synchronisation von Java Threads Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 22

23 Synchronisation von Java Threads Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 23

24 Synchronisation von Java Threads Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 24

25 Synchronisation von Java Threads Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 25

26 Synchronisation von Java Threads Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 26

27 Synchronisation von Java Threads Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 27

28 Synchronisation von Java Threads Lösung: Wechselseitiger Ausschluss muss gewährleistet werden Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 28

29 Synchronisation von Java Threads Java stellt zur Lösung des wechselseitigen Ausschluss von Threads beim Zugriff auf gemeinsame Daten synchronized Blöcke und Methoden zur Verfügung. Deklaration einer Methode bzw. eines Blocks als synchronized stellt sicher, dass keine gleichzeitige Ausführung durch zwei Threads erfolgt. Die Synchronisation wird In der JVM dadurch realisiert, dass jedem Java Objekt implizit eine Mutexvariable zugeordnet wird. Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 29

30 Synchronisation von Java Threads Wenn eine synchronisierte Methode aufgerufen wird, versucht der aufrufende Thread die Sperre für das Objekt zu erhalten Wenn der Thread die Sperre nicht erhalten kann, geht der Thread schlafen, bis die Sperre wieder zur Verfügung steht Sobald die Sperre erhalten wird, kann kein anderer Thread die Sperre erhalten, bis sie freigegeben wird. D.h. bis die synchronisierte Methode beendet wird Wenn ein Thread innerhalb eines synchronisierten Methode ist, weiß er, Thread aufgerufen werden kann dass keine andere synchronisierte Methode von jedem anderen Beim Verlassen der synchronisierten Methode wird die Sperre wieder freigegeben. Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 30

31 Überblick Signalmechanismus in Java ( wait() / notify() ) erweiterte Java Synchronisationsmuster ( Semaphore, Barriers, Bedingungsvariablen ) Thread Scheduling in Java Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 31

32 Signalmechanismus in Java wait/signal bzw. wait() / notify() Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 32

33 Signalmechanismus in Java wait() / notify() der Klasse Object benötigt Monitor ermöglicht das Blockieren und Aufwecken von Threads z.b. um auf bestimmte Bedingung zu warten, die ein anderer Thread herbeiführt verhindert busy waiting Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 33

34 Signalmechanismus in Java wait() blockiert den aufrufenden Thread, bis der von notify() aufgeweckt wird: synchronized (lockobject) { while (!Bedingung) { lockobject.wait(); } Aktion; } notifyall() alle aufwecken Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 34

35 Signalmechanismus in Java wait() gibt Mutexvariable frei wait / notify arbeitet mit Warteliste für jedes Objekt eine Liste mit durch wait() blockierten Threads Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 35

36 Signalmechanismus in Java wait / notify sind nicht statisch: Aufruf in nicht statischen Methoden oder mit zusätzlichen Objekt o: o.wait() bzw. o.notify() o ist beliebiges Objekt oder Class objekt der enthaltenden Klasse: Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 36

37 Signalmechanismus in Java Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 37

38 Signalmechanismus in Java wait(int ms, int ns) blockiert bis zum Ablauf der angegebenen Zeit, wenn vorher nicht durch notify() geweckt Zeitangabe ist Mindestzeit Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 38

39 Signalmechanismus in Java ein blockierter Thread kann auch durch Unterbrechung geweckt werden void interrupt(); //Klasse Thread bei nicht blockiertem Thread wird interruptflag gesetzt dieser löst dann bei Blockieren sofort Ausnahme aus Überprüfung durch: static boolean interrupted(); //eigener Status boolean isinterrupted(); //anderer Thread Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 39

40 Signalmechanismus in Java Warteliste: BLOCKED (wartet auf Lock) M O N I T O R Warteliste: WAITING (wartet auf notify) Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 40 notify wait

41 Signalmechanismus in Java NEW Neuer Thread, noch nicht gestartet RUNNABLE Läuft in der JVM BLOCKED Wartet auf einen Monitor Lock, wenn er etwa einen synchronized Block betreten möchte WAITING Wartet etwa auf ein nofity() TIMED_WAITING Wartet etwa in einem sleep() TERMINATED Ausführung beendet Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 41

42 erweiterte Java Synchronisationsmuster (Semaphore, Barriers, Bedingungsvariablen) Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 42

43 Semaphore abstrakter Datentyp mit 2 Operationen: P(s), V(s) P(s) = await (s > 0); s:= s 1 V(s) = s:= s + 1 Semaphore s wird mit Wert k initialisiert k=1 : binäre Semaphore Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 43

44 Semaphore wechselseitiger Aussschluss mit Semaphoren: variable mutex :=Semaphore(1); process Process() do Remainder of code ; P(mutex); Critical section ; V(mutex); od; end Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 44

45 Semaphore Implementierung mit wait/signal: public class Semaphore{ private int k; public Semaphore(int k) { this.k=k; } public synchronized void p() { while (k==0) wait(); k; } } public synchronized void v() { ++k; notify(); } Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 45

46 Semaphore Javaklasse: java.util.concurrent.semaphore Konstruktoren: Semaphore(int permits) Semaphore(int permits, boolean fair) P() = aquire(); acquireuninterruptibly V() = release(); Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 46

47 Semaphore void acquire(int permits) void acquireuninterruptibly(int permits) int availablepermits() int drainpermits() Collection<Thread> getqueuedthreads() int getqueuelength() boolean hasqueuedthreads() boolean isfair() void reducepermits(int reduction) void release(int permits) String tostring() boolean tryacquire() boolean tryacquire(int permits) boolean tryacquire(int permits, long timeout, TimeUnit unit) boolean tryacquire(long timeout, TimeUnit unit) Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 47

48 Semaphore Achtung Deadlock: Thread 1 Thread 2 s1.aquire(); s2.aquire(); s2.aquire(); s1.aquire(); s2.aquire(); s1.aquire(); s1.aquire(); s2.aquire(); Ausführung: T1: s1.aquire(); T2: s2.aquire(); T1: s2.aquire(); T2: s1.aquire(); DEADLOCK!!! Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 48

49 Beispiel Semaphore Problem: - n Honigbienen - 1 hungriger Bär - 1 Topf Honig (anfangs leer) Topf fasst maximal H Portionen Honig. Bienen füllen Topf. Bär schläft bis Topf voll ist, und isst dann den Topf leer und schläft wieder ein. Die Biene die den Topf voll macht weckt den Bären Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 49

50 Beispiel Semaphore Semaphor sleep = new Semaphore(0); Semaphore wait = new Semaphore(0); Semaphore check = new Semaphore(1); int topf = 0; final int H = _; public void bear(){ while(true){ sleep.aquire(); e a t topf = 0; wait.release(); } } Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 50

51 Beispiel Semaphore public void bees(){ check.aquire(); ++topf; if (topf==h){ sleep.release(); wait.aquire(); } check.release() } Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 51

52 Barrier Synchronisation Barrier definiert fixen Punkt im Code, an dem ein Thread auf andere Threads wartet alle teilnehmenden Threads warten dort solange, bis alle anderen Thread auch dort angekommen sind Barrier Objekt erforderlich Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 52

53 Barrier Synchronisation Anzahl Threads Konstruktor alle aufwecken warten Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 53

54 Barrier Synchronisation Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 54

55 Barrier Synchronisation Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 55

56 Barrier Synchronisation Implementierung mit Semaphoren: public class Barrier{ int t2w4, k; Semaphore s; public barrier(int n) { this.t2w4=n; this.k=n; this.s=new Semaphore(0); } public synchronized wait4rest(){ int n = k; if (k>0) s.acquireuninterruptibly(); else s.release(t2w4); return n; } } Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 56

57 Barrier Synchronisation seit Java 5: Klasse: CyclicBarrier Paket: java.util.concurrent Konstruktoren: CyclicBarrier(int parties) CyclicBarrier(int parties, Runnable barrieraction) Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 57

58 Barrier Synchronisation Methoden: int await() int await(long timeout, TimeUnit unit) int getnumberwaiting() int getparties() boolean isbroken() void reset() Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 58

59 Bedingungsvariable Problem: wait/notify immer mit bezüglich eines Objektes Bindung an die implizite Mutexvariable des zugehörigen Objektes findet statt einfache Benutzung weniger flexibel Nachbildung von Bedinungsvariablen wie in pthreads_cond... möglich Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 59

60 Bedingungsvariable Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 60

61 Bedingungsvariable Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 61

62 Bedingungsvariable Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 62

63 Bedingungsvariable Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 63

64 Thread Scheduling in Java Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 64

65 Thread Scheduling in Java Thread Scheduling von der JVM (java virtual machine) Zuteilung von Threads an Prozessoren kann beeinflusst werden Vergabe von Prioritäten Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 65

66 Thread Scheduling in Java public static final int MIN_PRIORITY // 1 public static final int MAX_PRIORITY // 10 public static final int NORM_PRIORITY // 5 public int getpriority() public void setpriority(int prio) Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 66

67 Thread Scheduling in Java Problem: Prioritätsinversion (priority inversion) Thread hoher Priorität wird blockiert und wartet auf Thread niediger Priorität Thread mittlerer Priorität hindert Thread hoher Priorität Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 67

68 Thread Scheduling in Java Lösung: Prioritätsvererbung (priority inheritance) wenn Thread hoher Priorität auf anderen Thread wartet, wird dessen Priorität angehoben (von vielen JVM's genutzt) Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 68

69 Ende Quellen: Parallele Programmierung Thomas Rauber, Gudula Rünger Java 7 Mehr als eine Insel Christian Ullenboom Java API ( ) ALP IV Skript: Concurrent Programming Marcel Kyas Vorlesungsfolien Nebenläufigkeit in Java Margarita Esponda...FRAGEN??? Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 69

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

Verteilte Systeme. 2. Die Client-Server-Beziehung und daraus resultierende Techniken. 2.2 Nebenläufigkeitstechniken in Java

Verteilte Systeme. 2. Die Client-Server-Beziehung und daraus resultierende Techniken. 2.2 Nebenläufigkeitstechniken in Java VS22 Slide 1 Verteilte Systeme 2. Die Client-Server-Beziehung und daraus resultierende Techniken 2.2 Nebenläufigkeitstechniken in Java Sebastian Iwanowski FH Wedel VS22 Slide 2 Was ist Nebenläufigkeit?

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

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

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

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

Ü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

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 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

3.2 Prozessumschaltung

3.2 Prozessumschaltung 3.2 Prozessumschaltung (dispatching) deaktiviert einen Prozess und aktiviert einen anderen. Wann? aktiver Prozess wird vom Prozessor verdrängt zugunsten eines bereiten Prozesses aktiver Prozess blockiert,

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

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

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

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

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

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

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

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory

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

Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner. Übung 5: Semaphoren

Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner. Übung 5: Semaphoren Universität Stuttgart Prof. Dr.-Ing. Dr. h. c. P. Göhner Aufgabe 5.1: Übung 5: Semaphoren Semaphor-Operationen In Bild 5.1.1 ist die Anordnung von Semaphor-Operationen am Anfang und am e der asks A,B,C

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

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

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

Institut für Programmierung und Reaktive Systeme 19. August Programmier-Labor. 1. Übungsblatt

Institut für Programmierung und Reaktive Systeme 19. August Programmier-Labor. 1. Übungsblatt echnische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 19. August 2014 Aufgabe 1: Programmier-Labor 1. Übungsblatt a) Welche primitiven Datentypen kennt

Mehr

VS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel

VS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel VS4 Slide 1 Verteilte Systeme Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel Inhaltsverzeichnis für die Vorlesung Zur Motivation: 4 Beispiele aus der Praxis Allgemeine Anforderungen an Verteilte

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

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Das Monitorkonzept Brinch-Hansen

Das Monitorkonzept Brinch-Hansen Das Monitorkonzept (nach Hoare/Brinch Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger Ausschluss, mutual exclusion. Geschützte

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

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

Multithreading ab Java 5: Die neuen Concurrency APIs

Multithreading ab Java 5: Die neuen Concurrency APIs Multithreading ab Java 5: Die neuen Concurrency APIs Java Concurrency Spezifiziert in JSR166 Ab Java 5 fester Bestandteil von Java Durch zusätzliche Library auch vor Java 5 vorhanden backport-util-concurrent

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

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

Überblick. Middleware - Übung. Threads in Java. Was ist ein Thread? Multithreading in Java Threads Synchronisation Koordinierung Überblick Middleware - Übung Tobias Distler, Michael Gernoth, Rüdiger Kapitza Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de

Mehr

Nebenläufige Programmierung in Java

Nebenläufige Programmierung in Java Informatik IV 37-004 SS 2002 Thomas Gross Diese Slides kommen ohne Gewähr. 9-1 Thomas Gross 1997-2000 Nebenläufige Programmierung in Java Threads und deren Zustände Speichermodell Einfache Synchronisation

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Info B VL 8: Abstrakte Klassen & Interfaces

Info B VL 8: Abstrakte Klassen & Interfaces Info B VL 8: Abstrakte Klassen & Interfaces Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 8: Abstrakte

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 6. Übung http://ess.cs.tu-.de/de/teaching/ws2013/bsb/ Olaf Spinczyk olaf.spinczyk@tu-.de http://ess.cs.tu-.de/~os AG Eingebettete System Informatik 12, TU Dortmund Agenda Vorstellung

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

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

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

Mehr

Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr.

Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr. Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr. Martin Müller Informatik II 2. Semesterklausur Prüfungsmodul Informatik II

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

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

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 4. Threads und nebenläufige Programmierung 4.1 Prozesse und Threads Moderne Betriebssysteme geben Benutzer die Illusion, verschiedene Programm würden gleichzeitig ausgeführt (Multitasking) Tatsächlich

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

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

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Softwarelösungen: Versuch 4

Softwarelösungen: Versuch 4 Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]

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

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

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Christian Schamott 1 / 26 Übersicht Gemeinsamkeiten 4 Arten geschachtelte Klassen Elementklasse Lokale Klassen Anonyme Klassen Statisch geschachtelte Klassen Christian Schamott 2

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 Das Java-Speichermodell Prof. Dr. Walter F. Tichy Dr. Victor Pankratius Ali Jannesari Geschichte des Speichermodells Kapitel 17 der Java-Sprachdefinition

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

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

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

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

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

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

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

Algorithmen und Programmierung IV: Nichtsequentielle Programmierung. Robert Tolksdorf. Freie Universität Berlin

Algorithmen und Programmierung IV: Nichtsequentielle Programmierung. Robert Tolksdorf. Freie Universität Berlin Algorithmen und Programmierung IV: Nichtsequentielle Programmierung Robert Tolksdorf Freie Universität Berlin Überblick Überblick Sperrsynchronisation Sperrsynchronisation in Datenbanken Bedingungssynchronisation

Mehr

Kapitel 4: Klassen und Unterklassen

Kapitel 4: Klassen und Unterklassen Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind

Mehr

System.out.println("TEXT");

System.out.println(TEXT); Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class

Mehr

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)

Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen) Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen) 1 Prozesse Bei Betriebssystemen stoßen wir des öfteren auf den Begriff Prozess als wahrscheinlich am häufigsten verwendeter und am unklarsten

Mehr

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article 2.13 Vererbung Klassen modellieren Objekte der realen Welt. Diese sind oft hierarchisch gegliedert. Beispiel: Ein Verlag bietet Bücher und CDs an. Beide Medien sind Artikel des Verlages. Book author: String

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

Java Solutions. Programmier- und Architekturlösungen für die Java-Plattform. Bearbeitet von Markus Kopp, Gerhard Wilhelms

Java Solutions. Programmier- und Architekturlösungen für die Java-Plattform. Bearbeitet von Markus Kopp, Gerhard Wilhelms Java Solutions Programmier- und Architekturlösungen für die Java-Plattform Bearbeitet von Markus Kopp, Gerhard Wilhelms 1. Auflage 2004. Buch. 400 S. Hardcover ISBN 978 3 446 22550 3 Format (B x L): 17,7

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

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

Proseminar Nichtsequentielle Programmiersprachen WS 2011/2012 Monitore

Proseminar Nichtsequentielle Programmiersprachen WS 2011/2012 Monitore Fachbereich Mathematik und Informatik Institut für Informatik Proseminar Nichtsequentielle Programmiersprachen WS 2011/2012 Monitore Sascha Kretzschmann 2. November 2011 Inhaltsverzeichnis 1 Einleitung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere

Mehr

Prof. Dr. Uwe Schmidt. 21.August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (BInf 211, BTInf 211, BMInf 211, BWInf 211)

Prof. Dr. Uwe Schmidt. 21.August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (BInf 211, BTInf 211, BMInf 211, BWInf 211) Prof. Dr. Uwe Schmidt 21.August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (BInf 211, BTInf 211, BMInf 211, BWInf 211) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen

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

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

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

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