Abgabe: (vor 12 Uhr) Aufgabe 12.1 (P) Siedlerspiel
|
|
- Babette Sauer
- vor 7 Jahren
- Abrufe
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
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
MehrParallele 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:
MehrFAKULTÄ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,
MehrThread-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
MehrAusnahmebehandlung 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
MehrObjektorientierte 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
MehrLebenszyklus 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
MehrVersuchsziele 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
MehrWintersemester 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
MehrLö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
MehrAllgemeine 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,
MehrAufgabenblatt 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:
MehrInstitut 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
Mehrparallele 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
MehrInstitut 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
MehrAbgabe: 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,
MehrProzesszustä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 &
MehrDr. 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
MehrAllgemeine 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,
MehrPraktikum 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
MehrVorlesung 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
MehrEinstieg 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
MehrNebenlä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
MehrLaborskript 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,
MehrEinstieg 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
MehrVersuchsziele. 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
MehrSoftwaretechnik 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.
MehrAllgemeine 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,
MehrListElement (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,
MehrLehrstuhl 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
MehrAufgabe 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?
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
MehrOOP: 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
MehrVorlesung 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
MehrSynchronisation 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
MehrEinfü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
MehrTeil 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
MehrAllgemeine 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
MehrKapitel 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
MehrKlausur 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
MehrInformatik 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
MehrInterface. 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.
MehrEinfü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 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c)
MehrEINFÜ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
MehrTesten 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
MehrPrü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
MehrVorkurs 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
MehrInformatik 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)
MehrInfo 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
MehrAbgabe: (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,
MehrParallelitä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
MehrInstitut 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
MehrParallele 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:
MehrAllgemeine 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,
MehrInstitut 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
MehrAbgabe: (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,
MehrProgrammierung 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
MehrJava 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(),
MehrEINFÜ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
MehrLö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)
MehrJava 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/
MehrAusgewä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,
MehrVerteilte 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,
MehrParallele 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,
MehrListe 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
MehrAllgemeine 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,
MehrTECHNISCHE 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.
MehrWirtschaftsinformatik 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
MehrAusnahmen. 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
Mehr5. 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
MehrProgrammieren 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
MehrEinfü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()
MehrEinstieg 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
MehrGrundlagen 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 Probleme bei Übung 8 [TODO Assistent] Nachbesprechung Übung 9 Aufgabe 1 Spieler Spieler[] spieler = { new ZufallsWortSpieler(), new ZufallsWortSpielerMitGedaechtnis(),
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
Mehr2 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
MehrKapitel 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
MehrAbgabe: (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,
MehrAlgorithmen 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
MehrJavakurs 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
MehrII.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
MehrTag 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
MehrParallele 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
MehrThreads 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
MehrTECHNISCHE 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.
Mehr12 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,
MehrDie 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
MehrUniversitä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
MehrBeteiligte 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
MehrPhilipp 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
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de Sommersemester 2009
MehrAllgemeine 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
MehrBeispiel 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
MehrPROG 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
MehrTECHNISCHE 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