Nebenläufigkeit in Java

Größe: px
Ab Seite anzeigen:

Download "Nebenläufigkeit in Java"

Transkript

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

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

3 Wo finden wir Nebenläufigkeit? Wettersimulation Betriebssysteme Suchmaschinen GUIs Computerspiele Prof. Dr. Margarita Esponda 3

4 Parallelität Echte Parallelität Virtuelle Parallelität Prozesse laufen auf unterschiedlichen CPUs Mehrere Prozesse laufen auf der selben CPU Prozess 1 Prozess 1 Prozess 2 Prozess 2 Prozess 3 Prozess 3 Prozess 3 Prozess 3 Prof. Dr. Margarita Esponda 4

5 Grundlegende Begriffe "single program" In der Steinzeit der PCs durfte man nur einzelne Programme streng sequentiell ausführen. "task switching" Mehrere Programme liegen im Hauptspeicher. Durch Umschaltung setzt man die Ausführung eines der Programme fort. "multitasking" Das Betriebssystem schaltet die Programme um. Man hat das Gefühl, dass mehrere Programme parallel laufen. "multithreading" Es gibt mehrere Programmfäden, die parallel innerhalb eines Programms ausgeführt werden. Prof. Dr. Margarita Esponda 5

6 "Multitasking" vs. "Multithreading" mehrere Prozesse (process) jeder Prozess hat eine eigene Umgebung Kein gemeinsamer Adressraum Verwaltung durch das Betriebssystem mehrere Programmfäden (thread) alle Threads laufen in der gleichen Umgebung gemeinsamer Adressraum!!! Verwaltung innerhalb eines Prozesses Prof. Dr. Margarita Esponda 6

7 Multitasking + Multithreading Prozess 1 Prozess 2 Prozess 3 Thread 1 Thread 2 Adressraum für Prozess 1 Adressraum für Prozess 2 Adressraum für Prozess 3 Prof. Dr. Margarita Esponda 7

8 Multitasking Betriebssystem Prozess 1 Prozess 2 Lokaler Speicher Lokaler Speicher Prozess 3 Lokaler Speicher Gemeinsamer Speicher Prozesse werden direkt vom Betriebssystem verwaltet. Jeder Prozess bekommt einen eigenen Speicherbereich vom Betriebssystem zugeteilt. Prof. Dr. Margarita Esponda 8

9 Multitasking + Multithreading Betriebssystem Prozess 1 Prozess 2 Lokaler Speicher Lokaler Speicher JVM Java Virtuelle Maschine Thread 1 Thread 2 Lokaler Speicher Lokaler Speicher Thread 3 Lokaler Speicher Gemeinsamer Speicherbereich Prof. Dr. Margarita Esponda 9

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

11 Threads Ausführungsstrang Ein Thread ist ein eigenständiges Programmfragment, das parallel zu anderen Programmfragmenten (Threads) laufen kann. Threads: können die Bedienbarkeit von Dialoganwendungen verbessern, indem rechenintensive Anwendungen im Hintergrund ablaufen. Threads werden auch als leichtgewichtige Prozesse bezeichnet. Prof. Dr. Margarita Esponda 11

12 Threads in Java Ein Programmfaden oder Ausführungsstrang wird durch ein Objekt des Typs Thread repräsentiert. Die Klasse Thread ist eine vollständige Implementierung des Runnable-Interfaces. Das Runnable-Interface stellt Klassen von Objekten die parallel ausführbaren Programmcode beinhalten. public interface Runnable { public abstract void run(); Prof. Dr. Margarita Esponda 12

13 Programmierung von Threads Thread-Klassen können in Java auf zwei verschiedene Arten definiert werden: als Unterklasse der Thread-Klasse public class Counter extends Thread {... public void run() {... Die Methode run() muss überschrieben werden durch Implementierung der Runnable-Schnittstelle public class Counter implements Runnable {... public void run() {... Die Methode run() muss implementiert werden Prof. Dr. Margarita Esponda 13

14 Die Thread-Klasse Thread ( ); // erzeugt ein leeres Thread-Objekt mit // automatisch festgelegtem Namen Thread-N Thread ( String name ); // erzeugt ein leeres Thread-Objekt mit Namenname Thread ( Runnable target ) Einige Konstruktoren // erzeugt zu Runnable-Objektziel ein Thread-Objekt Thread ( Runnable target, String name ) // erzeugt zu Runnable-Objektziel ein Thread-Objekt // mit Namen name Prof. Dr. Margarita Esponda 14

15 Die Thread-Klasse run()-methode Innerhalb der run()-methode befinden sich die potenziell parallel ausführbaren Aktivitäten eines Threads. start() - Methode Startet ein Thread und zwar: - es wird Speicher für den Thread bereit gestellt - und die run-methode wird aufgerufen Prof. Dr. Margarita Esponda 15

16 Beispiel: public class SimpleThread extends Thread { public SimpleThread ( String name ) { super(name); public void run(){ for( int i=0; i<100; i++ ) System.out.print( this.getname() ); public class TestSimpleThread { public static void main( String[] args ){ SimpleThread tanne = new SimpleThread("Anne "); SimpleThread tpeter = new SimpleThread("Peter "); tanne.start(); tpeter.start(); Anne Anne Anne Anne Anne Anne Anne Anne Anne Anne Anne Peter Peter Peter Peter Peter Peter Peter Peter Peter Peter Peter Peter Peter Peter Peter Peter Anne Anne Anne Anne Anne Anne Anne Anne Anne Anne Anne Anne Anne Anne Anne Peter Peter Peter Peter Peter Peter Prof. Dr. Margarita Esponda 16

17 Java-Programm mit Multithreading main... thread1 = new Thread() thread2 = new Thread() thread1.start() thread2.start() maindosomething() mainwork() mainwork() end() thread1.. void run(){ work1() work2() work3() work4() work5() thread2.. void run(){ work1() work2() work3() work4() work5() work6() Zeit Prof. Dr. Margarita Esponda 17

18 weitere wichtige Methoden join() - Methode Um auf die Beendigung eines oder mehrerer Threads zu warten, benutzt man die join() - Methode. sleep(int millis) - Methode Ein Thread kann mit der sleep()-methode für eine vorbestimmte Zeit in den Zustand "not runnable" versetzt werden. Prof. Dr. Margarita Esponda 18

19 Implementierung als Unterklasse von Thread public class SimpleThread extends Thread { int lifetime; public SimpleThread( String name, int lifetime ) { super( name ); this.lifetime = lifetime; public void run() { for ( int i=0; i<lifetime; i++ ) { try { this.sleep( 1000 ); System.out.println( "Ich bin "+this.getname() ); catch ( InterruptedException ie ) System.out.println(ie); Prof. Dr. Margarita Esponda 19

20 public class TestSimpleThread { public static void main( String[] args ) { SimpleThread t1 = new SimpleThread( "Andreas", 5 ); SimpleThread t2 = new SimpleThread( "Hanna", 5 ); SimpleThread t3 = new SimpleThread( "Anne", 3 ); t1.start(); t2.start(); t3.start(); System.out.println( "Ich bin main" ); Ausgabe: Ich bin main Ich bin Andreas Ich bin Hanna Ich bin Anne Ich bin Andreas Ich bin Hanna Ich bin Anne Ich bin Andreas Ich bin Hanna Ich bin Anne Ich bin Andreas Ich bin Hanna Ich bin Andreas Ich bin Hanna main t1 t2 t3 t1 t2 t3 t1 t2 t3 t1 t2 t1 t2 Prof. Dr. Margarita Esponda 20

21 public class TestSimpleThread { public static void main( String[] args ) { SimpleThread t1 = new SimpleThread( "Andreas", 5 ); SimpleThread t2 = new SimpleThread( "Hanna", 5 ); t1.start(); t2.start(); try { Thread-Beispiel t1.join(); // Warte auf den 1.Thread t2.join(); // Warte auf den 2.Thread catch ( InterruptedException ie ) { System.out.println( ie ); System.out.println( "Ich bin main" ); // end of main // end of class Ich bin Andreas Ich bin Hanna Ich bin Andreas Ich bin Hanna Ich bin Andreas Ich bin Hanna Ich bin Andreas Ich bin Hanna Ich bin Andreas Ich bin Hanna Ich bin main t1 t2 t1 t2 t1 t2 t1 t2 t1 t2 main Prof. Dr. Margarita Esponda 21

22 Implementierung der Runnable-Schnittstelle public class SimpleRunnable implements Runnable { // Instanzvariablen int lifetime; Thread thread; public SimpleRunnable( String name, int lifetime ) { this.thread = new Thread( this, name ); this.lifetime = lifetime; public void run() { for ( int i=0; i<this.lifetime; i++ ) { System.out.println( "Ich bin "+this.thread.getname() ); // end of run // end of class Prof. Dr. Margarita Esponda 22

23 Implementierung der Runnable-Schnittstelle public class TestSimpleRunnable { public static void main( String[] args ) { SimpleRunnable t1 = new SimpleRunnable( "Peter", 6 ); SimpleRunnable t2 = new SimpleRunnable( "Hanna", 6 ); Thread t1.thread.start(); t2.thread.start(); System.out.println( " Ich bin am Ende " ); // end of main // end of class Ausgabe: Ich bin am Ende Ich bin Peter Ich bin Hanna Ich bin Peter Ich bin Hanna Ich bin Peter Ich bin Hanna Ich bin Peter Ich bin Hanna Ich bin Peter Ich bin Hanna Ich bin Peter Ich bin Hanna main t1 t2 t1 t2 t1 t2 t1 t2 t1 t2 t1 t2 Prof. Dr. Margarita Esponda 23

24 public class TestSimpleRunnable { join()-methode public static void main( String[] args ) { SimpleRunnable t1 = new SimpleRunnable( "Peter", 6 ); SimpleRunnable t2 = new SimpleRunnable( "Hanna", 6 ); Ausgabe: Thread t1.thread.start(); t2.thread.start(); try { t1.thread.join(); t2.thread.join(); catch ( InterruptedException ie ) { System.out.println( ie ); System.out.println( " Ich bin am Ende " ); // end of main // end of class Ich bin Peter Ich bin Hanna Ich bin Peter Ich bin Hanna Ich bin Peter Ich bin Hanna Ich bin Peter Ich bin Hanna Ich bin Peter Ich bin Hanna Ich bin Peter Ich bin Hanna Ich bin am Ende t1 t2 t1 t2 t1 t2 t1 t2 t1 t2 t1 T2 main Prof. Dr. Margarita Esponda 24

25 Weitere Klassenmethoden der "Thread"-Klasse public class Thread implements Runnable { /* Methoden */... static int activecount() static Thread currentthread() static boolean holdslock(object obj) static boolean interrupted() static void setdefaultuncaughtexceptionhandler... ( Thread.UncaughtExceptionHandler eh ) Prof. Dr. Margarita Esponda 25

26 weitere Instanzmethoden der "Thread"-Klasse public class Thread implements Runnable { /* Methoden */... int getpriority() String getname() long getid() boolean isalive( ) void setdaemon(boolean on) void setname(string name) void setpriority(int newpriority) StackTraceElement[] getstacktrace() Thread.State getstate()... Prof. Dr. Margarita Esponda 26

27 Es gibt kein Java-Programm ohne Threads. Betriebssystem Betriebssystem Java-Anwendung garbage collector Browser garbage collector main-thread Java-Applet Java-Applet GUI setvisible(true) init-thread init-thread event-dispatcher Prof. Dr. Margarita Esponda 27

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

29 Was ist das Problem mit Threads? - es ist sehr einfach Threads in Java zu programmieren - es ist schwer Threads ohne Fehler zu programmieren! Was geschieht, wenn Threads gemeinsame Variablen oder Ressourcen benutzen? Prof. Dr. Margarita Esponda 29

30 Threads mit gemeinsamen Daten T1 T2 public void run(){.. x = x + 1; y = y + 1; paint();. public void run(){.. x = x * 2; y = y * 2; paint();. x=y T1: x = x + 1; x = x * 2; T2: y = y * 2; T2: paint(); T2: T1: y = y + 1; 3, 3 4, 3 8, 3 8, 6 8, 6 8, 7 x=y? Prof. Dr. Margarita Esponda 30

31 Synchronisationsprobleme public class Asynchron extends Thread { public static int zaehler = 0; Klassenvariable Gemeinsame Variable für alle Objekte der Klasse Asynchron. public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); public static void main( String args[] ) { Thread t1 = new Asynchron(); Thread t2 = new Asynchron(); t1.start(); t2.start(); Prof. Dr. Margarita Esponda 31

32 Synchronisationsprobleme zaehler 0 t1 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); t2 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); Prof. Dr. Margarita Esponda 32

33 Synchronisationsprobleme zaehler 678 t0 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); t1 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); Prof. Dr. Margarita Esponda 33

34 Synchronisationsprobleme Thread[Thread-0,5,main] 1 Thread[Thread-0,5,main] 2 Thread[Thread-0,5,main] 3 Thread[Thread-0,5,main] 4 Thread[Thread-0,5,main] 5 Thread[Thread-0,5,main] 6 Thread[Thread-1,5,main] Thread[Thread-0,5,main] 8 8 Thread[Thread-0,5,main] 9 Thread[Thread-0,5,main] 10 Thread[Thread-0,5,main] 11 Thread[Thread-0,5,main] 12 Thread[Thread-0,5,main] 13 Thread[Thread-0,5,main] 14 Thread[Thread-0,5,main] 15 Thread[Thread-0,5,main] 16 Thread[Thread-0,5,main] 17 Thread[Thread-0,5,main] 18 Thread[Thread-0,5,main] Thread[Thread-1,5,main] Thread[Thread-0,5,main] Thread[Thread-1,5,main] Thread[Thread-0,5,main] Thread[Thread-1,5,main] 24 Thread[Thread-0,5,main] 25 Prof. Dr. Margarita Esponda 34

35 Synchronisationsprobleme zaehler 24 t0 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); t1 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); Prof. Dr. Margarita Esponda 35

36 Synchronisationsprobleme zaehler 24 t0 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); t1 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); Prof. Dr. Margarita Esponda 36

37 Synchronisationsprobleme zaehler 24 t0 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); t1 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); Prof. Dr. Margarita Esponda 37

38 Synchronisationsprobleme zaehler 24 t0 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); t1 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); Prof. Dr. Margarita Esponda 38

39 Synchronisationsprobleme zaehler t0 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); t1 public void run() { while ( zaehler<25 ) { zaehler++; System.out.print( this + " " ); System.out.println( zaehler ); Prof. Dr. Margarita Esponda 39

40 Lösung: Wechselseitiger Ausschluss muss gewährleistet werden. T1 T2 public void run(){.. x = x + 1; y = y + 1; paint();. Kritischer Abschnitt public void run(){.. x = x * 2; y = y * 2; paint();. Kritischer Abschnitt nur ein Thread im kritischen Abschnitt Prof. Dr. Margarita Esponda 40

41 Kritische Abschnitte Wechselseitiger Ausschluss muss gewährleistet werden, wenn gemeinsame Ressourcen benutzt werden. kritischer Abschnitt Prof. Dr. Margarita Esponda 41

42 Typisches Beispiel: Drucker-Spooler simultaneous peripheral operations on line QTail Erster freier Platz der Warteschlange Thread A... adr = liest QTail speichert Datei in adr inkrementiert QTail... Thread B... adr = liest QTail speichert Datei in adr inkrementiert QTail... Prof. Dr. Margarita Esponda 42

43 Klassisches Beispiel in der Literatur: Drucker-Spooler simultaneous peripheral operations on line QTail =4 Unterbrechung Thread A... adr = liest QTail speichert Datei in adr inkrementiert QTail... Thread B... adr = liest QTail speichert Datei in adr inkrementiert QTail... Unterbrechung Prof. Dr. Margarita Esponda 43

44 Typisches Beispiel: Drucker-Spooler simultaneous peripheral operations on line Fehler! QTail Thread A Thread B Unterbrechung adr = liest QTail speichert Datei in adr inkrementiert QTail... adr = liest QTail speichert Datei in adr inkrementiert QTail... Kritischer Abschnitt Unterbrechung Prof. Dr. Margarita Esponda 44

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

46 Kritische Abschnitte Kritische Abschnitte sind die Teile des Programms, in denen auf gemeinsam benutzten Speicher bzw. Ressourcen zugegriffen werden kann. Wechselseitiger Ausschluss muss gewährleistet werden. Wie? 1. Unterbrechungen ausschalten 2. Variablen sperren 3. Strikter Wechsel 4. Petersons Lösung 5. Die TSL- Anweisung Prof. Dr. Margarita Esponda 46

47 1. Unterbrechungen ausschalten disable_interrupts(); kritischer_abschnitt(); enable_interrupts(); Jedoch: Benutzerprozesse sollten nicht die Macht haben, alle Unterbrechungen auszuschalten. Die Ausschaltung von Unterbrechungen ist ein Privileg des Betriebssystems. Nicht geeignet als Ausschlussmechanismus für Benutzerprozesse. Prof. Dr. Margarita Esponda 47

48 2. Variablen sperren Nehmen wir an, zwei Threads möchten eine Warteschlange gemeinsam benutzen. Warteschlange Sperre = 01 Wenn Sperre = 0, ist die Warteschlange gesperrt Wenn Sperre = 1, ist die Warteschlange nicht gesperrt Die Prozesse benutzen wiederum eine gemeinsame Variable, um den Zugriff auf die Warteschlange zu synchronisieren. Prof. Dr. Margarita Esponda 48

49 2. Variablen sperren Warteschlange Sperre = 01 Thread A Thread B if (Sperre == 0) Interrupt if (Sperre == 0) Sperre = 1; Sperre = 1; kritischer kritischer Abschnitt wird ausgeführt else warten... Beide Prozesse können in ihren kritischen Bereich gleichzeitig eintreten. Abschnitt wird ausgeführt else warten... Interrupt Prof. Dr. Margarita Esponda 49

50 3. Strikter Wechsel Warteschlange turn = 01 while ( true ) { while ( turn!= 0 ); critical_region(); turn = 1; noncritical_region(); while ( true ) { while ( turn!= 1 ); critical_region(); turn = 0; noncritical_region(); Thread 0 Thread 1 Prof. Dr. Margarita Esponda 50

51 3. Strikter Wechsel Warteschlange turn = 01 while ( true ) { while ( turn!= 0 ); critical_region(); turn = 1; noncritical_region(); while ( true ) { while ( turn!= 1 ); critical_region(); turn = 0; noncritical_region(); Thread 0 Thread 1 Prof. Dr. Margarita Esponda 51

52 3. Strikter Wechsel Warteschlange turn = 1 Erst wenn Thread 1 wieder in seinem kritischen Abschnitt gewesen ist, darf Thread 0 seinen kritischen Abschnitt wieder betreten. Leider erfordert diese Lösung einen strikten Wechsel zwischen den Prozessen. while ( true ) { while ( turn!= 0 ); critical_region(); turn = 1; noncritical_region(); while ( true ) { while ( turn!= 1 ); critical_region(); turn = 0; noncritical_region(); Thread 0 Thread 1 Prof. Dr. Margarita Esponda 52

53 4. Petersons Lösung für zwei Prozesse public class PetersonThread extends Thread { static int turn = 0; static boolean[] ready = { false, false ; int id, other; public PetersonThread( int id ){ this.id = id; this.other = 1-id; public void run() { while(true){ ready[id] = true; turn = other; while( ready[other] && turn==other ); critical_region(); ready[id]=false; noncritical_region(); Prof. Dr. Margarita Esponda 53

54 4. Petersons Lösung für zwei Prozesse 0 1 ready false false turn = 0 public void run() { while ( true ) { ready[0] = true ; turn = 1; while(ready[1] && turn==1); { //kritischer Abschnitt ready[0] = false; { //Rest des Programms public void run() { while ( true ) { ready[1] = true ; turn = 0; while(ready[0] && turn==0); { //kritischer Abschnitt ready[1] = false; { //Rest des Programms Thread 0 Thread 1 Prof. Dr. Margarita Esponda 54

55 5. TSL-Anweisung Lösung mit Hardware-Unterstützung. Insbesondere Mehrprozessorrechner haben TSL- Anweisungen. TSL RX, LOCK Test and Set Lock Wenn die CPU eine TSL-Anweisung im Speicher ausführt, wird der Speicherbus gesperrt, bis er fertig ist. Prof. Dr. Margarita Esponda 55

56 Peterson + TSL-Anweisung Prioritätsumkehrproblem flag 0 1 false false turn = 0 P 0 hat eine höhere Priorität while ( true ) { flag[0] = true ; turn = 1; while(flag[1] && turn==1); { //kritischer Abschnitt flag[0] = false; { //Rest des Programms P 1 hat eine niedrigere Priorität while ( true ) { flag[1] = true ; turn = 0; while(flag[0] && turn==0); { //kritischer Abschnitt flag[1] = false; { //Rest des Programms Prof. Dr. Margarita Esponda 56

57 Peterson + TSL-Anweisung Prioritätsumkehrproblem flag 0 1 true true turn = 1 P 0 hat eine höhere Priorität while ( true ) { flag[0] = true ; turn = 1; while(flag[1] && turn==1); { //kritischer Abschnitt flag[0] = false; { //Rest des Programms P 1 hat eine niedrigere Priorität while ( true ) { flag[1] = true ; turn = 0; while(flag[0] && turn==0); { //kritischer Abschnitt flag[1] = false; { //Rest des Programms Prof. Dr. Margarita Esponda 57

58 Peterson + TSL-Anweisung Der Peterson-Algorithmus und die TSL-Lösung haben den Nachteil, dass aktives Warten erforderlich ist. Probleme 1. CPU-Zeit Verschwendung 2. Prioritätsumkehrproblem Prioritätsumkehrproblem Obwohl P 0 eine höhere Priorität als P 1 hat, muss er immer länger als P 1 warten, um in seinen kritischen Abschnitt eintreten zu können. Prof. Dr. Margarita Esponda 58

59 Schlafen und Aufwecken Sleep und Wakeup Eine Alternative zum aktiven Warten ist: Schlafen gehen, anstatt CPU-Zeit zu verschwenden. Aber ein schlafender Prozess kann sich selber nicht aufwecken. D.h. er braucht einen entsprechenden Partner, der ihn wieder aufweckt. Prof. Dr. Margarita Esponda 59

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

61 Semaphoren Semaphoren sind eine der wichtigsten Datenstrukturen, die für die Synchronisation von Prozessen in fast allen Betriebssystemen zur Verfügung gestellt werden. Semaphoren als eine Lösung für Prozesssynchronisation wurde von Edsger W. Dijkstra 1965 konzipiert. Semaphoren haben folgende Komponenten: - ein Zähler - eine acquire-operation - eine release-operation Prof. Dr. Margarita Esponda 61

62 Semaphoren Der Inhalt der Semaphoren wird nur mit Hilfe der Operationen acquire und release verändert. Die aquire- und release-operationen sind atomare Operationen, die einen Thread eventuell wecken oder zum Schlafen schicken. Prof. Dr. Margarita Esponda 62

63 Lösung mit Semaphoren Ab Java 1.5 ist eine Semaphor-Klasse in dem Paket java.util.concurrent enthalten. Allgemeine Verwendung eines einfachen binären Semaphors oder mutex. Semaphore sem = new Semaphore(1);... public void run(){... sem.acquire(); kritische_abschnitt(); sem.release(); Prof. Dr. Margarita Esponda 63

64 Probleme mit Semaphoren Folgende einfache Fehler werden oft vom Programmierer gemacht: s.release();... // Kritischer Abschnitt... s.acquire(); s.acquire();... // Kritischer Abschnitt... s.acquire(); Mehrere Threads können in den kritischen Abschnitt eintreten. Ein Deadlock findet innerhalb des Threads statt. Prof. Dr. Margarita Esponda 64

65 Probleme mit Semaphoren Folgende Fehler sind im Programm schwer zu erkennen, weil die Probleme nur bei bestimmten Ausführungssequenzen auftreten. T 0 T 1 T0: S1.acquire(); S1.acquire(); S2.acquire(); T1: S2.acquire(); S2.acquire(); S1.acquire(); T0: S2.acquire(); Wartet!.... T1: S1.acquire(); Wartet!.. S2.release(); S1.release(); S1.release(); S2.release(); Verklemmung! Prof. Dr. Margarita Esponda 65

66 Deadlocks Ein Deadlock oder Verklemmung ist ein Zustand, bei dem mindestens zwei Prozesse auf Ressourcen warten, die einem anderen beteiligten Prozess zugeteilt sind und nicht mehr frei gegeben werden können. Klassisches Beispiel: Prof. Dr. Margarita Esponda 66

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

68 Monitore Sind abstrakte Datentypen (ADT) Gemeinsame Daten T a T b T c T d Nur durch die Operationen des Monitors dürfen die inneren Daten geändert werden. Ein Monitor garantiert gegenseitigen Ausschluss des Zugriffs auf die Daten innerhalb des Monitors.... Operationen Nur ein Thread darf zu einem bestimmten Zeitpunkt innerhalb des Monitors aktiv sein. Prof. Dr. Margarita Esponda 68

69 Monitore Nur ein Thread darf zu einem bestimmten Zeitpunkt innerhalb des Monitors aktiv sein. Das Objekt ist blockiert T 3 T 2 T 4 T 8 T 1 T o Besitzer des Objektes Monitore können in Java als Klassen mit synchronized- Methoden und geeigneter Verwendung der wait-, notify- und notifyall-methoden realisiert werden. Prof. Dr. Margarita Esponda 69

70 Das synchronized-schlüsselwort in Java... synchronized (Objektvariable) { In Java ist jede Instanz der Klasse java.lang.object mit einer Sperrvariable verknüpft. Diese Sperre entspricht einem booleschen Semaphor. Beispiel:... synchronized ( nums ) { for ( int i=0; i<nums.length; i++ ) { if (nums[i] < 0) nums[i] = -nums[i];... Prof. Dr. Margarita Esponda 70

71 Das synchronized-schlüsselwort in Java T1... synchronized (A) {... synchronized (B) { T2... synchronized (B) {... synchronized (A) { Verklemmung! Prof. Dr. Margarita Esponda 71

72 Monitore Gemeinsame Daten T a T b T c T d Bedingungsvariablen b 1 T 2 T 1 T 3 Warteschlangen, die mit b 2 b 3 T 7 T 4 T 5 Bedingungsvariablen verbunden sind. Sprachen mit Monitorkonzept... Concurrent Pascal C# Erlang Ada Squeak Smalltalk Java Prof. Dr. Margarita Esponda 72

73 Wait und Notify Die wait() und notify()-methoden können nur innerhalb eines synchronized-blockes stehen. Aufruf der wait-methode - Der Thread gibt die Objektschlüssel zurück. - Der Thread selber geht in den blockierten Zustand. - Der blockierte Thread wird in die Warteschlange des Objektes gestellt. Aufruf der notify-methode - Ein beliebiger Thread aus der Warteschlange des Objektes wird gewählt. - Der gewählte Thread wird in den Entry-Set gestellt. - Der Zustand des Threads wird auf runnable gesetzt. Prof. Dr. Margarita Esponda 73

74 Monitore in Java T 8 T 1 Entry-Set T 8 T 1 Das Objekt ist blockiert wait T 3 T 2 T 4 T o Wait-Set Hier warten die Threads auf den Lock des Objektes Besitzer des Objektes Hier warten die Threads auf ein Notify Prof. Dr. Margarita Esponda 74

75 Monitore in Java T 8 T 1 Entry-Set T 8 T 1 Das Objekt ist blockiert notify T o Wait-Set T 3 T 2 T 4 Hier warten die Threads auf den Lock des Objektes Besitzer des Objektes Hier warten die Threads auf ein Notify Prof. Dr. Margarita Esponda 75

76 Leser/Schreiber-Problem - beliebig viele Threads dürfen gleichzeitig lesen - nur ein Thread darf schreiben (keiner darf lesen) public class Database implements ReadWriteLock { private int readercounter; private boolean Writing; public Database(){ readercounter = 0; Writing = false;... //end of class Database Prof. Dr. Margarita Esponda 76

77 Leser/Schreiber-Problem public class Database implements ReadWriteLock {... public synchronized void acquirereadlock() { while( Writing == true ){ try { wait(); catch (InterruptedException e) {... ++readercounter; public synchronized void acquirewritelock() { while( readercounter>0 Writing==true ){ try { wait(); catch (InterruptedException e) {... Writing = true; //end of class Database Prof. Dr. Margarita Esponda 77

78 Leser/Schreiber-Problem public class Database implements ReadWriteLock {... public synchronized void releasereadlock() { --readercounter; /* der letzte Leser meldet sich */ if ( readercounter==0 ) notify(); public synchronized void releasewritelock() { Writing = false; notifyall();... //end of class Database Verhungern! Prof. Dr. Margarita Esponda 78

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

80 Lebens-Zyklus eines Threads JDK 1.1 new Thread() suspend() New start() rechen- bereit resume() blockiert stop() stop() stop() Tot Deadlock-Probleme! Prof. Dr. Margarita Esponda 80

81 Verklemmungsprobleme stop kritischer Abschnitt Verklemmung! Prof. Dr. Margarita Esponda 81

82 Lebens-Zyklus eines Threads JDK 1.2 new Thread() schlafend IO- blockiert interrupt Time out IO-End sleep() IO-Operation neu start() rechen- bereit yield() Scheduling rechnend terminiert tot interrupt notify() wait() Freigegeben Monitor besetzt interrupt wartend Monitor- blockiert Prof. Dr. Margarita Esponda 82

83 java.util.concurrent - Klassen mit unteilbarem (atomarem) Zugriff AtomicBoolean, AtomicInteger, AtomicIntegerArray, AtomicLong, AtomicReference, usw. - Erweiterte Sammlungsklassen für Threads ConcurrentLinkedQueue, ConcurrentHashMap, usw. - Semaphor-Klasse - Klassen für ThreadPools - Erweiterte Klassen für Sperren und Synchronisation Prof. Dr. Margarita Esponda 83

84 Threads Unterbrechungen in Java Threads zu unterbrechen ist kompliziert, wenn diese gerade gemeinsame Ressourcen verwenden. In Java haben Threads einen Unterbrechungsanforderungszustand. Asynchrone Unterbrechung stop() Deprecated Deferred Cancellation (verzögerte Unterbrechung) Unterbrechungen interrupt() Der interruption-status des Threads wird gesetzt. interrupted() Der interruption-status des Threads wird geprüft und zurück gesetzt. isinterrupted() Der interruption-status des Threads wird nur geprüft. Prof. Dr. Margarita Esponda 84

85 Threads unterbrechen in Java Die interrupt- Methode setzt nur den Unterbrechungsanforderungszustand eines Threads auf true. Um einen Thread tatsächlich unterbrechen zu können, müssen wir unterbrechbare Threads programmieren, die diesen Zustand regelmäßig selber überprüfen und ihre run-methode dann selber beenden, wenn alle Ressourcen abgegeben worden sind. Die interrupted-methode ist eine statische Methode, die den Unterbrechungsanforderungszustand des aktuellen Threads nur einmal überprüft und zurück setzt. Die interrupt-methode liefert eine InterruptedException, wenn ein Thread vorher wegen einer wait- sleep- oder join-methode bereits unterbrochen worden ist. Ab Java 1.5 ist es auch möglich Threads zu unterbrechen, die auf Ein- Ausgabe-Operationen warten (siehe Package java.nio). Prof. Dr. Margarita Esponda 85

86 Threads unterbrechen in Java public class UnterbrechbareThread extends Thread { public void run() { while( true ){ System.out.println("Hi! Ich lebe noch!!!"); if ( Thread.currentThread().isInterrupted() ){ System.out.println("Ich bin aufgefordert zu unterbrechen!"); break; /* Hier kann der Thread Ressourcen abgeben und * seine Ausführung sauber beenden. */ // end of class UnterbrechbareThread Unterbrechbare Threads müssen selber ihren interrupted-status kontrollieren und ihre Ausführung selber unterbrechen. Prof. Dr. Margarita Esponda 86

87 Threads unterbrechen in Java public class Test_UnterbrechbareThread { public static void main(string args[]){ Thread th = new Thread(new UnterbrechbareThread()); th.start(); Schlaf.nickerchen(200); th.interrupt(); Der Unterbrechungsanforderungszustand des Threads wird auf true gesetzt. Prof. Dr. Margarita Esponda 87

88 Literatur Java Threads. 3th Edition Scott Oaks & Henry Wong. Prof. Dr. Margarita Esponda 88

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

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

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

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

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

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

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

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

Vorlesung Informatik II

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

Mehr

Nebenläufigkeit mit Java

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

Mehr

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

Java Concurrency Utilities

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

Mehr

Ü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

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

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

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

Mehr

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

Java Threads. von Gerhart Mende und Awad Fuad. Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 1 Java Threads von Gerhart Mende und Awad Fuad Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 1 Einleitung Erzeugung und Start von Threads Synchronisation von Java Threads Signalmechanismus

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

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

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

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

Mehr

Ausnahmebehandlung in Java

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

Mehr

Java I Vorlesung Nebenläufigkeit

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

Mehr

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

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

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

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

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

Vorlesung Informatik II

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

Mehr

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

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

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss Maren Bennewitz Version 12.12.2012 1 Nachtrag zu letzter Vorlesung Hauptspeicher reicht nur für begrenzte Anzahl von

Mehr

Threading. Arthur Zaczek. Aug 2015

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

Mehr

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

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss Maren Bennewitz Version 18.12.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung,

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

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

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

Mehr

JJ Prozesse und Nebenläufigkeit

JJ Prozesse und Nebenläufigkeit 1 Wiederholung: Algorithmus von Peterson boolean ready0=false, ready1=false; int turn=0; JJ Prozesse und Nebenläufigkeit (Auszug aus der Vorlesung) while( 1 ) Prozess 0 ready0 = true; turn = 1; while(

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

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

Prozessverwaltung. Ein Prozess ist das zentrale Konzept in jedem Betriebssystem.

Prozessverwaltung. Ein Prozess ist das zentrale Konzept in jedem Betriebssystem. Prozessverwaltung Ein Prozess ist das zentrale Konzept in jedem Betriebssystem. Wir machen die Annahme, dass jeder Prozess ein Thread innerhalb des Betriebssystems zugeordnet bekommt. Prozesse Parameter

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

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

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

Mehr

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

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

Mehr

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

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

Mehr

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

Prozesse und Threads. Saalübung Informatik II SS Threads erzeugen. Prozesse und Threads. Threads, Monitore und Semaphore

Prozesse und Threads. Saalübung Informatik II SS Threads erzeugen. Prozesse und Threads. Threads, Monitore und Semaphore Saalübung Informatik II SS 2006 Threads, Monitore und Semaphore Virtuelle Speicherverwaltung Prozesse und Threads Moderne Betriebssysteme - Illusion, dass verschiedene Programme gleichzeitig ausgeführt

Mehr

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

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

Mehr

Nebenläufige Programmierung 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

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

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

16. Parallelität: Threads

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

Mehr

Klausur Software-Entwicklung September 00

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

Mehr

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

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

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

Mehr

Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit ausgeführt werden.

Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit ausgeführt werden. 7 Parallelität und Nebenläufigkeit Mehrere Prozessen oder Threads Parallelität Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit

Mehr

Funktionale und Objekt-Orientierte Programmierkonzepte

Funktionale und Objekt-Orientierte Programmierkonzepte Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1

Mehr

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

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

Mehr

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

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

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

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

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

Mehr

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober 2001 Stefan Holland Informatik II Hinweise: Klausur II Verwenden Sie für Ihre Lösungen ausschließlich

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 21.11.2012 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Testat nach Weihnachten Mittwoch

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

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

Kurz über Booting. Um das Betriebssystem zu laden, brauchen wir ein minimales Betriebssystem ("the bootstrap loader") dafür.

Kurz über Booting. Um das Betriebssystem zu laden, brauchen wir ein minimales Betriebssystem (the bootstrap loader) dafür. Kurz über Booting Um das Betriebssystem zu laden, brauchen wir ein minimales Betriebssystem ("the bootstrap loader") dafür. "to pull yourself up by your bootstrap" Der "bootstrap loader" wiederum lädt

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

Echtzeitanwendungen mit Java Real Time Specification for Java

Echtzeitanwendungen mit Java Real Time Specification for Java Fakultät Informatik» Institut für Angewandte Informatik» Lehrstuhl für Technische Informationssysteme Echtzeitanwendungen mit Java Real Time Specification for Java Vortrag im Rahmen des Hauptseminars Technische

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

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

Mehr

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

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

Mehr

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

FAKULTÄT FÜR INFORMATIK

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

Mehr

Betriebssysteme G: Parallele Prozesse ( Teil C: SpinLock, Semaphore, Monitore)

Betriebssysteme G: Parallele Prozesse ( Teil C: SpinLock, Semaphore, Monitore) Betriebssysteme G: Parallele Prozesse ( Teil C: SpinLock, Semaphore, Monitore) 1 Hardwareunterstützung Uniprozessor-System Verbiete Interrupts während des Aufenthalts in einer CR disable interrupt CR(bzw:

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

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

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

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 4

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

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

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

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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 13.11.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion Betriebssysteme Vorlesung im Herbstsemester 2010 Universität Mannheim Kapitel 6: Speicherbasierte Prozessinteraktion Felix C. Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung

Mehr

Verteilte Systeme. Nebenläufigkeit. Prof. Dr. Oliver Haase

Verteilte Systeme. Nebenläufigkeit. Prof. Dr. Oliver Haase Verteilte Systeme Nebenläufigkeit Prof. Dr. Oliver Haase 1 Arten der Nebenläufigkeit 1-Prozessor(kern)-System quasiparallele Ausführung erhöht Interaktivität durch Umschalten zwischen Threads kann Parallelitätsgrad

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

12 Abstrakte Klassen, finale Klassen und Interfaces

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

Mehr

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

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

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

Mehr

Vorlesung 2. Prozesse und Threads

Vorlesung 2. Prozesse und Threads Vorlesung 2 Prozesse und Threads 1 PROZESSE IN SOFTWARESYSTEMEN Komplexe Systeme bestehen aus mehreren Programmen, die gelichzeitig/nebenläufig ausgeführt werden Die Ausführung eines Programms wird oft

Mehr

Algorithmen und Datenstrukturen

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

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

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

Threads - und wie sie in Java implementiert sind. Vortrag von Lukas Klimmasch, Stefan Lang und Ralf Schmidt Jena, den

Threads - und wie sie in Java implementiert sind. Vortrag von Lukas Klimmasch, Stefan Lang und Ralf Schmidt Jena, den Threads - und wie sie in Java implementiert sind Vortrag von Lukas Klimmasch, Stefan Lang und Ralf Schmidt Jena, den 05.12.2011 Was ist ein Thread? laut Wikipedia: ein Ausführungsstrang oder eine in der

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

Einstieg in die Informatik mit Java

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

Mehr

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

4. Thread- und Netzwerk- Programmierung

4. Thread- und Netzwerk- Programmierung 4. Thread- und Netzwerk- Programmierung 4.1 Ziel dieses Kapitels 4.2 Prozeß versus Thread 4.3 Thread-Programmierung 4.4 TCP/IP Grundlagen 4.5 TCP Programmierung 3. TCP/IP und Threads 3-1 4.1 Ziel dieses

Mehr