Abgabe: (vor 12 Uhr) Aufgabe 12.1 (P) Siedlerspiel

Größe: px
Ab Seite anzeigen:

Download "Abgabe: (vor 12 Uhr) Aufgabe 12.1 (P) Siedlerspiel"

Transkript

1 TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 12 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz, Dr. M. Petter Abgabe: (vor 12 Uhr) Aufgabe 12.1 (P) Siedlerspiel a) Implementieren Sie eine Klasse Siedler als Kindklasse der Klasse Thread. Statten Sie Ihre Klasse mit einem Konstruktor aus, der die Übergabe von zwei Objekten (d.h. vom Typ Object) als erwünschte Rohstoffe erlaubt. b) Erweitern Sie Ihre Klasse um eine void run()-methode, in der Sie zuerst ein Lock auf den ersten Rohstoff beantragen, dann 2 Sekunden warten, und dann ein Lock auf den zweiten Rohstoff beantragen und wieder 2 Sekunden warten, bevor Sie beide Locks wieder freigeben. Versehen Sie Ihre run()-methode mit ausreichend vielen erläuternden Statusmeldungen. c) Testen Sie Ihre Klasse Siedler mit den zwei Siedlern Simon und Lewis, sowie den Rohstoffen Stein und Holz in einem main()-programm und untersuchen Sie, ob und unter welchen Umständen es zu einer Verklemmung kommen kann. Lösungsvorschlag 12.1 public class S i e d l e r extends Thread private Object a ; private Object b ; public S i e d l e r ( Object a, Object b ) this. a=a ; this. b=b ; public void run ( ) synchronized ( a ) try System. out. p r i n t l n ( this. getname ( )+ : hat Ressource +a ) ; s l e e p (2000) ; catch ( InterruptedException i e ) System. out. p r i n t l n ( Thread +this. getname ( )+ : moechte gerne Ressource +b ) ; synchronized ( b ) try System. out. p r i n t l n ( this. getname ( )+ : hat Ressource +b ) ; s l e e p (2000) ; catch ( InterruptedException i e )

2 2 public static void main ( S t r i n g [ ] arg ) Object x = new S t r i n g ( S t e i n ) ; Object y = new S t r i n g ( Holz ) ; S i e d l e r simon = new S i e d l e r ( x, y ) ; simon. s t a r t ( ) ; S i e d l e r l e w i s = new S i e d l e r ( y, x ) ; l e w i s. s t a r t ( ) ; Aufgabe 12.2 (P) Producer/Consumer In dieser Aufgabe sollen 3 Threads miteinander kommunizieren. Weiterhin soll es eine globale int-variable zahl geben, auf die alle Threads zugreifen sollen. Thread 1 soll wiederkehrend eine Sekunde schlafen und dann die Variable zahl um eins erhöhen. Thread 2 und 3 sollen immer dann den aktuellen Wert der Variablen zahl ausgeben, wenn dieser durch 7 teilbar ist. Sorgen Sie dafür, dass ein Wert der Variablen zahl von jedem Thread höchstens einmal ausgegeben wird. Thread 2 und 3 sollen über jede Änderung des Wertes der Variablen zahl benachrichtigt werden und dann die Chance erhalten diesen auszugeben. Implementieren Sie geeignete Klassen für die Threads sowie eine main-methode, die die oben geschilderte Situation initialisiert. Lösungsvorschlag 12.2 Der aufzaehlende Thread public class Aufzaehler extends Thread public void run ( ) while ( true ) try Thread. currentthread ( ). s l e e p (1000) ; catch ( InterruptedException ex ) synchronized ( Simple. monitor ) Simple. zahl++; Simple. monitor. n o t i f y A l l ( ) ; Variante 1 für den Ausgabe-Thread und die Test-Klasse c l a s s Ausgeber extends Thread public void run ( ) int l e t z t e Z a h l = 0 ; while ( true ) synchronized ( Simple. monitor )

3 3 while ( Simple. zahl % 7!= 0 Simple. zahl == l e t z t e Z a h l ) try Simple. monitor. wait ( ) ; catch ( InterruptedException ) System. out. p r i n t l n ( Zahl : + Simple. zahl ) ; l e t z t e Z a h l = Simple. zahl ; ex public class Simple static Object monitor = new Object ( ) ; static int zahl = 0 ; public static void main ( S t r i n g [ ] args ) (new Aufzaehler ( ) ). s t a r t ( ) ; (new Ausgeber ( ) ). s t a r t ( ) ; (new Ausgeber ( ) ). s t a r t ( ) ; Variante 2 für den Ausgabe-Thread und die Test-Klasse public c l a s s Ausgeber2 extends Thread public void run ( ) while ( true ) synchronized ( Simple. monitor ) i f ( Simple. zahl % 7 == 0) System. out. p r i n t l n ( Zahl : + Simple. zahl ) ; try Simple. monitor. wait ( ) ; catch ( InterruptedException ex ) public class Simple2 static Object monitor = new Object ( ) ; static int zahl = 0 ; public static void main ( S t r i n g [ ] args ) (new Aufzaehler ( ) ). s t a r t ( ) ; (new Ausgeber2 ( ) ). s t a r t ( ) ; (new Ausgeber2 ( ) ). s t a r t ( ) ; 2 Punkte für die main 2 Punkte um global über den Zustand buch zu führen

4 4 2x1 Punkt extends Thread incl. run() Producer: 5 Punkte 1 try/catch, 1 synchronized, 2 notifyall, 1 sleep Consumer: 7 Punkte 1 try/catch, 1 synchronized, 1 wait, 3 für warten bis Bedingung erfüllt ist, 1 jede Zahl maximal einmal ausgeben Aufgabe 12.3 (P) Ampel Implementieren Sie eine einfache Ampel, die die Abläufe an einem Fußgängerüberweg regelt. Die Ampel regelt den Verkehr an der Kreuzung Badstrasse und Schlossallee. Sie verteilt die Berechtigung, die Kreuzung zu üeberqueren zeitweise an die jeweiligen Verkehrsteilnehmer. a) Implementieren Sie zunächst einen Thread Ampel mit folgenden Eigenschaften: Die Ampel hat nur zwei Zustände: Entweder können die Verkehrsteilnehmer über die Badstrasse oder über die Schlossallee gehen. Im Betrieb wechselt die Ampel permanent zwischen diesen Zuständen, wobei sie in jedem Zustand eine Minute bleibt. Aufrufe zum Überqueren der gerade gesperrten Strasse soll die Ampel bis zum nächsten Zustandswechsel blockieren. b) Geben Sie die Implementierung eines Threads Verkehrsteilnehmer an. Der Verkehrsteilnehmer ist durch seinen Namen gekennzeichnet, und möchte eine der beiden Strassen sicher überqueren. Er soll solange warten, bis die Ampel ihm das Überqueren erlaubt. c) Statten Sie Ihr Programm mit ausreichend Ausgaben aus, um den Ablauf nachvollziehen zu können. d) Schreiben Sie eine main-methode, die zum Testen eine Ampel und mehrere Verkehrsteilnehmer startet. Lösungsvorschlag 12.3 class Verkehrsteilnehmer extends Thread Ampel a ; public Verkehrsteilnehmer ( S t r i n g name, Ampel a ) super (name) ; this. a=a public void run ( ) z u f a l l s w a r t e n ( 5 ) ; try i f (Math. random ( ) >.5) a. ueberquerebadstrasse ( this ) ; else a. u e b e r q u e r e S c h l o s s a l l e e ( this ) ; catch ( InterruptedException i e ) System. e r r. p r i n t l n ( Ampelbetrieb abgebrochen wir warten auf einen V e r k e h r s p o l i z i s t e n! ) ; private static void z u f a l l s w a r t e n ( int i ) try s l e e p ( ( int ) (Math. random ( ) i 1000) ) ; catch ( InterruptedException i e )

5 5 public c l a s s Ampel extends Thread // i n t e r n e r Zustand der Ampel : private boolean b a d s t r a s s e = true ; private boolean s c h l o s s a l l e e = f a l s e ; // Monitor, um den Z u g r i f f auf den Zustand a b z u s i c h e r n // und ueber Zustandsaenderung zu b e n a c h r i c h t i g e n : private Object umschalten = new Object ( ) ; private void umschalten ( ) // Zustand muss atomar u m g e s c h a l t e t werden : synchronized ( umschalten ) b a d s t r a s s e =! b a d s t r a s s e ; s c h l o s s a l l e e =! s c h l o s s a l l e e ; // Wartende Leute b e n a c h r i c h t i g e n umschalten. n o t i f y A l l ( ) ; // Monitor abgeben, um Aktionen f r e i z u g e b e n! public S t r i n g t o S t r i n g ( ) // Zustandsauskunft i s t ein k r i t i s c h e r Bereich! // Um jeden Preis verhindern, dass b e i d e Richtungen // gruen z e i g e n! synchronized ( umschalten ) S t r i n g r e t = ; r e t += Badstrasse hat +(( b a d s t r a s s e )? gruen : rot )+ \n ; r e t += S c h l o s s a l l e e hat +(( s c h l o s s a l l e e )? gruen : rot ) ; return r e t ; private static void ampelphase ( ) try s l e e p (1000) ; catch ( InterruptedException i e public void run ( ) while ( true ) // 1 Sek. s c h l a f e n ampelphase ( ) ; // Zustand aendern umschalten ( ) ; // S t a t u s a u s g a b e System. out. p r i n t l n ( this ) ; public void ueberquerebadstrasse ( Verkehrsteilnehmer v ) throws InterruptedException System. out. p r i n t l n ( v+ w i l l d i e Badstrasse ueberqueren ) ; // S t r a s s e ueberqueren i s t ein k r i t i s c h e r Bereich : // r e a g i e r t s e n s i b e l auf Scheduler g e s t e u e r t e Unterbrechung // zwischen der S c h l e i f e n b e d i n g u n g und dem t a t s a e c h l i c h e n ueberqueren!

6 6 synchronized ( umschalten ) while (! b a d s t r a s s e ) System. out. p r i n t l n ( Badstrasse i s t rot, +v+ muss an der Ampel warten ) ; umschalten. wait ( ) ; System. out. p r i n t l n ( J e t z t i s t gruen, v+ ueberquert d i e Badstrasse ) ; public void u e b e r q u e r e S c h l o s s a l l e e ( Verkehrsteilnehmer v ) throws InterruptedException System. out. p r i n t l n ( v+ w i l l d i e S c h l o s s a l l e e ueberqueren ) ; synchronized ( umschalten ) while (! s c h l o s s a l l e e ) System. out. p r i n t l n ( S c h l o s s a l l e e i s t rot, +v+ muss an der Ampel warten ) ; umschalten. wait ( ) ; System. out. p r i n t l n ( J e t z t i s t gruen, +v+ ueberquert d i e S c h l o s s a l l e e ) ; public static void main ( S t r i n g [ ] args ) Ampel a = new Ampel ( ) ; a. s t a r t ( ) ; for ( int i =0; i <10; i ++) Verkehrsteilnehmer f r e d = new Verkehrsteilnehmer ( Fred Faden der +i+., a ) ; f r e d. s t a r t ( ) ; Aufgabe 12.4 [5 Punkte] (H) Kopfbahnhof Die Haltestelle Garching Forschungszentrum soll durch die Klasse Kopfbahnhof simuliert werden. Die Haltestelle hat zwei Bahnsteige, einen Weichenbereich und zwei Gleise. Alle Züge kommen über Gleis 0 an und verlassen den Bahnhof über Gleis 1. Einfahrende und ausfahrende Züge müssen immer zuerst die Weiche passend stellen. Züge werden durch Threads dargestellt, sie rufen alle die Methode nutzebahnhof des Kopfbahnhofs auf, die den kompletten Ablauf steuert. Aus nutzebahnhof sollen die Methoden einaussteigen und weichestellen aufgerufen werden, sobald ein Zug die jeweilige Ak-

7 7 tion durchführt. Die Methoden einaussteigen und weichestellen sind unveränderlich vorgegeben: public class Kopfbahnhof protected boolean [ ] b a h n s t e i g f r e i = true, true ; // TODO: A t t r i b u t e public void e i n a u s s t e i g e n ( ) // nicht m o d i f i z i e r b a r // l a e s s t P a ssagiere kurze Z e i t lang ein / a u s s t e i g e n public void w e i c h e s t e l l e n ( int bahnsteignr, int g l e i s N r ) // nicht m o d i f i z i e r b a r und n i c h t thread s a f e // s t e l l t und p a s s i e r t d i e Weiche // zwischen bahnsteignr und g l e i s N r public void nutzebahnhof ( ) // TODO: Implementieren Sie die Methode nutzebahnhof() so, dass der Weichenbereich, Bahnsteig 0 und Bahnsteig 1 jeweils immer nur von einem Zug verwendet werden. Ihre Lösung sollte weder Züge unnötig auf freier Strecke noch an einem Bahnsteig warten lassen, noch einen Dead-Lock einführen. Hinweis: Wenn beide Bahnsteige besetzt sind, sollen ankommende Züge vor der Weiche warten bis ein Bahnsteig frei ist! Lösungsvorschlag 12.4 c l a s s Bahnhofimpl extends Kopfbahnhof private Object weichenmonitor = new Object ( ) ; public void nutzebahnhof ( ) int meinbahnsteig = 0 ; synchronized ( weichenmonitor ) // Auf f r e i e n Bahnsteig warten while (! b a h n s t e i g f r e i [ 1 ] &&! b a h n s t e i g f r e i [ 0 ] ) try weichenmonitor. wait ( ) ; catch ( Exception e ) e. printstacktrace ( ) ; return ; // Bahnsteig waehlen i f (! b a h n s t e i g f r e i [ 0 ] ) meinbahnsteig =1; // e i n f a h r e n w e i c h e s t e l l e n ( meinbahnsteig, 0 ) ; b a h n s t e i g f r e i [ meinbahnsteig ]= f a l s e ; // P a s s a giere ein und a u s s t e i g e n l a s s e n! e i n a u s s t e i g e n ( ) ;

8 8 // Wir mã 1 4 ssen wieder d i e Weichen p a s s i e r e n synchronized ( weichenmonitor ) // Bahnsteig f r e i g e b e n b a h n s t e i g f r e i [ meinbahnsteig ]=true ; // ausfahren w e i c h e s t e l l e n ( meinbahnsteig, 1 ) ; // Wartende ZÃ 1 4 ge wecken weichenmonitor. n o t i f y ( ) ; Aufgabe 12.5 [5 Punkte] (H) ReaderWriter Es soll ein ReaderWriterLock mittels Semaphoren implementiert werden. Ähnlich einem synchronized Block verhindert der Lock den ungeschützten Zugriff mehrerer Threads auf ein Objekt. Der ReaderWriterLock muss vor der Benutzung des Objekts akquiriert werden. Nach der Benutzung des Objekts wird der Lock wieder freigegeben. Ein synchronized Block gestattet immer nur einem einzigen Benutzer auf das Objekt zuzugreifen. Falls mehrere Benutzer auf ein Objekt nur lesend zugreifen wollen, dann könnte dies auch parallel geschehen, ohne Probleme zu verursachen. Deshalb unterscheidet der ReaderWriterLock zwischen lesendem und schreibendem Zugriff. Eine vorgegebene, maximale Anzahl von Benutzer darf gleichzeitig lesend zugreifen während höchstens ein Benutzer das Objekt modifizieren darf sobald sichergestellt ist, dass kein anderer Benutzer während dessen lesend zugreift. public interface R e a d e r W r i t e r I n terface public void r e a d S t a r t ( ) throws InterruptedException ; public void readfinished ( ) throws InterruptedException ; public void w r i t e S t a r t ( ) throws InterruptedException ; public void w r i t e F i n i s h e d ( ) throws InterruptedException ; public int getreadercount ( ) ; public int getwritercount ( ) ; Um lesenden Zugriff zu erhalten wird der Lock mittels readstart() akquiriert. Über read- Finish() wird der Lock nach Beendigung des Lesens wieder freigegeben. Verwenden Sie eine Semaphore, welche mit der maximal erlaubten Anzahl von Lesern initialisiert wird, um die beiden Methoden zu Implementieren. Analog zum Lesen werden die Schreibzugriffe mittels writestart() und writefinish() koordiniert. Zum Schreiben müssen alle Leseresourcen angefordert werden, damit kein anderer Benutzer während dessen lesen oder schreiben kann. Das auf der Homepage zur Verfügung gestellte Testprogramm verwendet einen ReaderWriterLock um sicher auf ein zwischen mehreren Threads geteiltes Objekt vom Typ MyObj zuzugreifen. Implementieren Sie einen ReaderWriterLock, welcher das ReaderWriterInterface unterstützt. Benutzen Sie dazu java.util.concurrent.semaphore. Das ist die Semaphore aus der Java-Bibliothek, die analog zur Semaphore aus der Vorlesung funktioniert. Zusätzlich zu acquire() und release() (entspricht up() und down() aus der Vorlesung), erlaubt es diese Semaphore mehrere Resourcen gleichzeitig (anstatt nur einer einzigen) zu akquirieren and freizugeben (acquire(int n) und release(int n)). Verwenden Sie

9 9 dies um einen ReaderWriterLock zu implementieren, bei dem die maximale Anzahl von gleichzeitigen readern im Konstruktor übergeben wird. Sollten mehr als diese Anzahl von Threads versuchen gleichzeitig lesend auf das Objekt zuzugreifen, dann müssen die überschüssigen Threads warten. Die methoden getreadercount() und getwritercount() liefern die aktuelle Anzahl von lesenden und schreibenden Benutzern. Sie dürfen nur aufgerufen werden, während ein Lese- oder Schreiblock akquiriert ist. Schreiben Sie ein funktion check(), welche nach jeder Veränderung der Anzahl der reader oder der writer verifiziert, dass beide Grössen sinnvoll sind. Werfen Sie eine Ausnahme, falls check() fehlschlägt. Testen Sie nun, ob das Testprogramm ohne Ausnahme terminiert. Lösungsvorschlag 12.5 // import java. u t i l. concurrent. Semaphore ; // use t h i s i n s t e a d o f MultiSemaphore i f no bonus public class ReaderWriter implements R e a derwriterinterface private MultiSemaphore reader ; private f i n a l int maxread ; private int writerc, readerc ; // j u s t f o r checks public int getreadercount ( ) return readerc ; public int getwritercount ( ) return writerc ; private void check ( ) throws InterruptedException // i s the current s t a t e v a l i d? i f ( writerc <0 writerc >1 readerc <0 readerc>maxread) System. out. p r i n t l n ( check f a i l e d! ) ; throw new InterruptedException ( ) ; i f ( writerc>0&&readerc >0) System. out. p r i n t l n ( RACE! ) ; throw new InterruptedException ( ) ; public ReaderWriter ( int maxread) // t h i s. a=a ; this. maxread=maxread ; reader = new MultiSemaphore (maxread, true ) ; //max reader ( f a i r )

10 10 public void r e a d S t a r t ( ) throws InterruptedException reader. a c q u i r e ( ) ; synchronized ( this ) // sync to guarantee c o n s i s t e n t s t a t e readerc++; check ( ) ; public void readfinished ( ) throws InterruptedException synchronized ( this ) readerc ; check ( ) ; reader. r e l e a s e ( ) ; public void w r i t e S t a r t ( ) throws InterruptedException reader. a c q u i r e (maxread) ; // gain a l l read a c c e s s synchronized ( this ) writerc++; check ( ) ; public void w r i t e F i n i s h e d ( ) throws InterruptedException synchronized ( this ) writerc ; check ( ) ; reader. r e l e a s e (maxread) ; Aufgabe 12.6 [Bonus 5 Punkte] (H) Semaphore Implementieren Sie Ihre eigene Semaphore, welche das Allozieren und Freigeben mehrer Resourcen gleichzeitig, korrekt unterstützt. Achten Sie darauf, dass Ihre Implementierung fair ist (Anfragen werden in der Reihenfolge bearbeitet, wie sie eintreffen). Hinweis: java.util.concurrent.concurrentlinkedqueue<e> könnte hilfreich sein. Lösungsvorschlag 12.6 import java. u t i l. concurrent. ;

11 11 // f a i r public class MultiSemaphore private int res, wait, max ; private ConcurrentLinkedQueue<Container> tq ; public MultiSemaphore ( int n, boolean f a i r ) r e s = n ; max = n ; wait = 0 ; tq = new ConcurrentLinkedQueue<Container >() ; private class Container Thread t ; int amount ; public Container ( Thread t, int amount ) this. t=t ; this. amount=amount ; public void a c q u i r e ( ) throws InterruptedException a c q u i r e ( 1 ) ; public void a c q u i r e ( int n ) throws InterruptedException Container c=null ; synchronized ( this ) // r e s must be synced // f a i r n e s s, i f someone i s w a i t i n g in the queue ( or t h e r e are not enough r e s o u r c e s ) we wait i f (! tq. isempty ( ) res <n ) c = new Container ( Thread. currentthread ( ), n ) ; wait++; else res =n ; i f ( c!= null ) synchronized ( c ) //make sure t h a t c. n o t i f y i s n t c a l l e d b e f o r e c. wait tq. add ( c ) ; //we can add only AFTER g e t t i n g the l o c k on c // t h e r e f o r e t q. add must be i n s i d e synchronized ( c ) => t q

12 12 must be thread s a f e c. wait ( ) ; // r e l e a s e s the l o c k on c a f t e r suspending the thread public void r e l e a s e ( int n ) throws InterruptedException synchronized ( this ) // sync r e s r e s+=n ; while ( true ) //maybe we can n o t i f y many w a i t e r s in the queue Container c=null ; synchronized ( this ) // sync r e s and t q. remove ( ) i f (! tq. isempty ( )&&tq. peek ( ). amount<=r e s ) c=tq. remove ( ) ; res =c. amount ; i f ( c!= null ) synchronized ( c ) // avoid n o t i f y b e f o r e wait c. n o t i f y ( ) ; synchronized ( this ) // p l s g i v e me w a i t f o r m u l t i p l e o b j e c t s ( )!! wait ; // r e q u e s t i s f u l f i l l e d else synchronized ( this ) // i f t h i s was the l a s t resource h o l d e r ( r e s==max) //and t h e r e are s t i l l o b j e c t s being added to t q ( wait >0) // but they are not y e t i n s i d e the queue ( t q. isempty ( )==t r u e ) // then we cannot return because i f we did return then noone // would ever c a l l n o t i f y i f ( res <max wait==0) break ;

13 13 public void r e l e a s e ( ) throws InterruptedException r e l e a s e ( 1 ) ;

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2014/15 Aufgabenblatt 11 19.01.2015

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

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

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

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

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ausnahmebehandlung und Nebenläufigkeit 9. Vorlesung am 15. Dezember 2010 Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A

Mehr

Lebenszyklus von Threads

Lebenszyklus von Threads Threads Umgangssprachlich Faden, Diskussionsfaden, Gewinde, Faser, Garn, roter Faden Threads ermöglichen Nebenläufigkeit (parallele Ausführung von Anwendungsteilen). Typisch für Threads ist,dass sie zu

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

Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München

Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München Informatik2 Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München 1 0 Allgemeines Inhalt dieser Vorlesung: Nebenläufigkeit in Java; Funktionales Programmieren mit OCaml :-) 2 1 Threads

Mehr

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am Aufgabe 1 Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am 16.3.2002 Folgende Implementierung löst die gestellte Aufgabe : public interface Figur { public void anzeigen (); public

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Endtermklausur Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Aufgabenblatt 8 Musterlösung

Aufgabenblatt 8 Musterlösung Prof. Dr. rer. nat. Roland Wismüller Aufgabenblatt 8 Musterlösung Vorlesung Betriebssysteme I Wintersemester 2017/18 Aufgabe 1: Erzeuger-Verbraucher Synchronisation (Bearbeitung in der Übungsstunde) Erzeuger-Verbraucher-Problem:

Mehr

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

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

Mehr

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher. Threads parallele Prozesse auf sequenziellen Prozessoren Prozesse und Threads Es gibt zwei unterschiedliche Programme: Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher. Ein Thread

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Praktikum: Grundlagen der Programmierung Prof. B. Rost, L. Richter WS 2013-14 Aufgabenblatt 9 20. Januar Threads 9.1

Mehr

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 10 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Prozesszustände (1a)

Prozesszustände (1a) Prozesszustände (1a) NOT EXISTING DELETED CREATED Meta-Zustand (Theoretische Bedeutung) Prozesszustände Multiuser Umfeld (1c) Hintergrund-Prozess - der Prozess startet im Hintergrund - my-commandbin &

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

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 11/12 Einführung in die Informatik I Probe-Klausur Prof. Dr. Helmut Seidl, M. Schwarz, A. Herz,

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

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

Laborskript Verteilte Systeme

Laborskript Verteilte Systeme Laborskript Verteilte Systeme Nebenläufigkeit in Java Prof. Dr. Oliver Haase 1 Threads Java bietet zwei verschiedene Arten an, Threads zu erzeugen und zu starten: Entweder durch Erweitern der Klasse Thread,

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

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

Softwaretechnik 1 Übung 5

Softwaretechnik 1 Übung 5 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Übung 5 2.7.29 Aufgabe 1a) Zeichnen Sie die komplette Vererbungshierarchie der Klasse BufferedOutputStream als UML- Klassendiagramm.

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 11/12 Einführung in die Informatik I Probe-Klausur Prof. Dr. Helmut Seidl, M. Schwarz, A. Herz,

Mehr

ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) {

ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) { TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 11 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt

Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 13 30.1.2017 Threads II Aufgabe 13.1. Synchronisiertes Lesen und Schreiben Betrachten

Mehr

Aufgabe 9 Threads [12]

Aufgabe 9 Threads [12] Aufgabe 9 Threads [12] a) Teilaufgaben: Antworten u. Grafiken größtenteils den Vorlesungsfolien von A. Brüggemann-Klein entnommen. a. Erläutern Sie die Zustände ready, running, sleeping, dead, in denen

Mehr

(b.) Welche Möglichkeit gibt es, die Methode run so zu verändern, dass Bora Bora IMMER zuletzt ausgegeben wird?

(b.) Welche Möglichkeit gibt es, die Methode run so zu verändern, dass Bora Bora IMMER zuletzt ausgegeben wird? Threads - Seite 1 Threads (1.) (a.) Nehmen Sie das Beispiel 2 von der Folie und ändern Sie dies ab, so dass sie z.b. ein Array von 100 Threads starten können! Testen Sie aber zunächst ihren Kode mit einem

Mehr

OOP: Nebenläufigkeiten Threads. Dipl.-Inform. Arnold Willemer

OOP: Nebenläufigkeiten Threads. Dipl.-Inform. Arnold Willemer OOP: Nebenläufigkeiten Threads Dipl.-Inform. Arnold Willemer arnold.willemer@hs-flensburg.de Schlafen für Profis Die C-64-Lösung kocht und blockiert den Prozessor while (!fertig) // nichts tun: busy waiting

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

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

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Prof. Dr. Harald Räcke, R. Palenta, A. Reuss, S. Schulze Frielinghaus 21.02.2017 Klausur Vorname Nachname Matrikelnummer Unterschrift Füllen Sie die oben angegebenen Felder

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr

Allgemeine Informatik II SS :30-13:30 Uhr

Allgemeine Informatik II SS :30-13:30 Uhr TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer

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

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

Informatik B. Vorlesung 8 Synchronisierung von Threads. Dr. Ralf Kunze

Informatik B. Vorlesung 8 Synchronisierung von Threads. Dr. Ralf Kunze Vorlesung 8 Synchronisierung von Threads 1 Rückblick Threads Erzeugen, Starten und Stoppen Fehler abfangen Gemeinsamer Zugriff auf Ressourcen Kritische Blöcke (Einleitung) 2 Kritische Blöcke Kritische

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Prof. Dr. Harald Räcke, R. Palenta, A. Reuss, S. Schulze Frielinghaus 18.04.2017 Wiederholungsklausur Vorname Nachname Matrikelnummer Unterschrift Füllen Sie die oben angegebenen

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

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt!! 26.03.2014 FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert von Methoden! String Fehlercode als String! int Fehlercode

Mehr

Testen nebenläufiger Objekte

Testen nebenläufiger Objekte Testen nebenläufiger Objekte Threads in Java Julian Lambertz Seminar Tests in Informatik und Statistik im SS 2004 Universität Ulm J.L., Juni 2004 1 Themenüberblick Einleitung Begriff der Nebenläufigkeit

Mehr

Prüfung Softwareentwicklung II (IB)

Prüfung Softwareentwicklung II (IB) Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 2 B, IB 2 C Sommersemester 2013 Prüfung Softwareentwicklung II (IB) Datum : 11.07.2013, 08:30 Uhr

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann

Mehr

Informatik II. Semesterklausur

Informatik II. Semesterklausur Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 5. Juli 2003 Stefan Fischer, Dr. Martin Müller Informatik II Semesterklausur Prüfungsmodul Informatik II (SS 2003)

Mehr

Info B VL 17: Deadlocks

Info B VL 17: Deadlocks Info B VL 17: Deadlocks Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 17: Deadlocks p.327 Conditional

Mehr

Abgabe: (vor 24 Uhr) Aufgabe 12.1 (P) Polymorphie Gegeben seien folgende Java-Klassen:

Abgabe: (vor 24 Uhr) Aufgabe 12.1 (P) Polymorphie Gegeben seien folgende Java-Klassen: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 11/12 Einführung in die Informatik I Übungsblatt 12 Prof. Dr. Helmut Seidl, M. Schwarz, A. Herz,

Mehr

Parallelität, Threads

Parallelität, Threads Parallelität, Threads Tutorium 17 Fabian Miltenberger 30.06.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

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

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

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 12/13 Einführung in die Informatik I Wiederholungsklausur Prof. Dr. Helmut Seidl, A. Lehmann,

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

Mehr

Abgabe: (vor 12 Uhr)

Abgabe: (vor 12 Uhr) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 7 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

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

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

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

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

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

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

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

Liste Programmieren Java Überblick

Liste Programmieren Java Überblick Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 7 Funktionsbibliothek 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 12/13 Einführung in die Informatik I Wiederholungsklausur Prof. Dr. Helmut Seidl, A. Lehmann,

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die rmatik I Übungsblatt 8 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz, Dr.

Mehr

Wirtschaftsinformatik II Sommersemester Lo sungshinweise zu den Ü bungen P. Mandl, M. Dolag, B. Rottmüller, et al.

Wirtschaftsinformatik II Sommersemester Lo sungshinweise zu den Ü bungen P. Mandl, M. Dolag, B. Rottmüller, et al. Wirtschaftsinformatik II Sommersemester 2016 Lo sungshinweise zu den Ü bungen 2-6 @Prof. P. Mandl, M. Dolag, B. Rottmüller, et al. Seite 1 / 6 Übung 2 Verwendung von Java-Threads Ableitung von Klasse Thread

Mehr

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

Ausnahmen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 27.6. Ausnahmen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 27.6.07 G. Bohlender (IANM UNI Karlsruhe) Ausnahmen 27.6.07 1 / 8 Übersicht 1 Einführung

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

Programmieren in Java -Eingangstest-

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

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 19. 25. Februar 2003 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Grundlagen in C# und.net

Grundlagen in C# und.net Grundlagen in C# und.net Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Inhalt TabbedPane (Register)

Mehr

Übungsstunde 9. Einführung in die Programmierung I

Übungsstunde 9. Einführung in die Programmierung I Übungsstunde 9 Einführung in die Programmierung I Probleme bei Übung 8 [TODO Assistent] Nachbesprechung Übung 9 Aufgabe 1 Spieler Spieler[] spieler = { new ZufallsWortSpieler(), new ZufallsWortSpielerMitGedaechtnis(),

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen

Mehr

Kapitel 9: Klassen und höhere Datentypen. Selektoren

Kapitel 9: Klassen und höhere Datentypen. Selektoren Selektoren Üblicherweise erlaubt man keinen (direkten) öffentlichen (public) Zugang zu Objektvariablen mehr Kontrolle über Zugang interne Details besser verborgen Statt dessen: Zugriff auf privates Feld

Mehr

Abgabe: (vor 24 Uhr)

Abgabe: (vor 24 Uhr) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 11/12 Einführung in die Informatik I Übungsblatt 8 Prof. Dr. Helmut Seidl, M. Schwarz, A. Herz,

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

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 07: Nebenläufigkeit Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in die Nebenläufigkeit und Java Thread Konzept: Motivation

Mehr

II.4.4 Exceptions - 1 -

II.4.4 Exceptions - 1 - n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Parallele und funktionale Programmierung Wintersemester 2013/ Übung Abgabe bis , 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2013/ Übung Abgabe bis , 16:00 Uhr 3. Übung Abgabe bis 15.11.2013, 16:00 Uhr Aufgabe 3.1: Sichtbarkeiten a) Aus welchen Gründen ist Sichtbarkeitssynchronisation bei parallelen Programmen wichtig? b) Welche Rollen spielen hierbei das Schlüsselwort

Mehr

Threads Kritische Bereiche Reales Beispiel Deadlocks Wait/Notify. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Threads Kritische Bereiche Reales Beispiel Deadlocks Wait/Notify. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 Threads 2 Kritische Bereiche 3 Reales Beispiel 4 Deadlocks 5 Wait/Notify Nebenläufigkeit Moderne Betriebssysteme unterstützen

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN 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 8 F. Forster, M.

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

Die objektorientierte Mühle Marc-Oliver Pahl

Die objektorientierte Mühle Marc-Oliver Pahl Die objektorientierte Mühle Marc-Oliver Pahl Es war einmal ein König, der machte Urlaub außerhalb seines Königreiches. Dort sah er eine tolle Einrichtung: Ein Haus, zu dem die Bauern ihr Korn fuhren und

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Lehrstuhl für Programmierparadigmen Fortgeschr. Objektorientierung SS 2009 http://pp.info.uni-karlsruhe.de/ Dozent: Prof. Dr.-Ing. G. Snelting snelting@ipd.info.uni-karlsruhe.de

Mehr

Beteiligte Typen (Auszug)

Beteiligte Typen (Auszug) Threads 1 Beteiligte Typen (Auszug) public sealed class Thread { public static Thread CurrentThread { get; public static void Sleep(int milliseconds) { public Thread(ThreadStart startmethod) { public string

Mehr

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads Philipp Güttler 18.11.2008 Progwerkstatt Letzte Änderung: 09.12.2009 Enums, Interfaces, Generics und Threads Seite 2 Enums Enums, Interfaces und Generics 17.11.2008 Enum Typen komplexer Datentyp, der festen

Mehr

Übungsblatt 10. Thema: Abstrakte Datentypen, Datenstrukturen in Java

Übungsblatt 10. Thema: Abstrakte Datentypen, Datenstrukturen in Java Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 10 Ausgegeben am: Abgabe bis: 13.01.2006 24.1.2006 (Theorie) 27.1.2006 (Praktisch) Thema:

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

Allgemeine Informatik II SS :30-11:30 Uhr

Allgemeine Informatik II SS :30-11:30 Uhr TU Darmstadt FB Informatik Prof. J. Fürnkranz Semestralklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 20.07.2005 09:30-11:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer

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

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker Multithreading PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker Steffen Helke Technische Universität Berlin Fachgebiet Softwaretechnik 10. Juni 2013 Übersicht Rückblick: Producer-Consumer-Problem

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 5 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr