Größe: px
Ab Seite anzeigen:

Download ""

Transkript

1 Software Engineering für moderne, parallele Plattformen 5. Parallelität in Java Dr. Victor Pankratius Dr. Victor Pankratius, Dipl.Inform. Frank Otto IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)

2 Agenda Erzeugen von Fäden Konstrukte zum Schützen kritischer Abschnitte Konstrukte für Warten und Benachrichtigung Java.util.concurrent Kollektionen Asynchrone Ausführung / Thread Pools Synchronisierer 2 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

3 Konstrukte zum Erzeugen von Parallelität Seit Java 1.0: Eingebaute Klassen und Schnittstellen für parallele Programmierung: Interface java.lang.runnable public interface Runnable { public abstract void run(); Klasse java.lang.thread public class Thread implements Runnable { public Thread(String name); public Thread(Runnable target) public void start(); public void run(); 3 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

4 Konstrukte zum Erzeugen von Parallelität Methode 1 Faden erzeugen Methode 2 Implementieren der Schnittstelle Runnable Anlegen einer Subklasse von Thread Implementieren der Methode Run() Überschreiben der Methode run() Übergabe einer Instanz an einen Konstruktor eines Thread-Objekts thread Anlegen einer Instanz thread der Subklasse Aufruf der Methode thread.start() 4 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

5 Konstrukte zum Erzeugen von Parallelität Beispiel: Methode 1 Klasse, die Runnable implementiert: class ComputeRun implements Runnable { long min, max; ComputeRun(long min, long max) { this.min = min; this.max = max; public void run() { // Parallele Aufgabe Erzeuge und starte Kontrollfaden: ComputeRun c = new ComputeRun(1,20); new Thread(c).start(); Starten des neuen Kontrollfadens. Erst das erzeugt die neue Aktivität Die Methode start() kehrt sofort zurück, der neue Kontrollfaden arbeitet nebenläufig weiter. Kein Neustart: start() darf nur einmal aufgerufen werden. run() nicht direkt aufrufen 5 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

6 Konstrukte zum Erzeugen von Parallelität Beispiel: Methode 2 Klasse, die von Thread erbt: class ComputeThread extends Thread { long min, max; ComputeThread(long min, long max) { this.min = min; this.max = max; public void run() { // Parallele Aufgabe Erzeuge und starte Kontrollfaden: ComputeThread t = new ComputeThread(1,10); t.start(); 6 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

7 Lebenszyklus eines Fadens Ein Faden kann in einem von sechs Zuständen sein (abfragen mit getstate()) NEW Faden wurde erstellt, aber start() noch nicht aufgerufen RUNNABLE Faden wird ausgeführt BLOCKED Faden wird nicht ausgeführt, weil er auf Ressource wartet (z.b. Sperre) WAITING Faden wird nicht ausgeführt, weil er Object.wait() oder Thread.join() aufgerufen hat TIMED_WAITING Faden wird nicht ausgeführt, weil er Thread.sleep() bzw. Object.wait() oder Thread.Join() mit einem Timeout-Wert aufgerufen hat TERMINATED Ausführung ist beendet. Methode run() wurde normal beendet oder durch auslösen einer Ausnahme 7 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

8 Kritische Abschnitte Monitor-Konzept: Jedes Objekt kann Monitor sein Jedes Objekt hat implizit assoziierte Sperre Gesperrt wird automatisch mit Hilfe des synchronized-konstrukts Synchronized ist block-orientiert /*synchronisierte Methode*/ synchronized void foo(){ // Rumpf ist kritischer // Abschnitt Alternative:... /*synchronisierter block*/ synchronized (obj) { // kritischer Abschnitt... 8 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

9 Kritische Abschnitte Sperrkonstrukte Ab Java 5: Zusätzliches Sperrkonstrukt ohne Blockorientierung, das explizit gesperrt/entsperrt werden kann: Lock in java.concurrent.locks //neu in Java 5 import java.util.concurrent.locks.*; Lock lock = new ReentrantLock(); //funktioniert auch bei //Rekursion lock.lock(); lock.unlock(); 9 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

10 Kritische Abschnitte Sperrkonstrukte Beispiel für weiteres Sperrkonstrukt in java.util.concurrent.locks ReentrantReadWriteLock Nützlich für parallele Algorithmen, die Datenstruktur häufig lesen und selten schreiben bzw. aktualisieren Besitzt ein Paar von getrennten Lock-Objekten für Lese- und Schreibsperren (readlock, writelock) Eine beliebige Anzahl von Fäden kann mit readlock() die Lesesperre acquirieren, solange kein Faden die Schreibsperre acquiriert oder bereits gesetzt hat Wenn Faden Schreibsperre setzen will, werden keine neuen Lesesperren mehr elaubt. Nachdem alle Leser ihre Lesesperren freigegeben haben, acquiriert der Schreiber die Schreibsperre. Es werden keine Lesezugriffe mehr erlaubt, bis Schreiber fertig ist. Ein Schreiber kann Schreibsperre zu einer Lesesperre umwandeln, indem er eine Lesesperre acquiriert und dann die Schreibsperre freigibt 10 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

11 Sperrkonstrukte Performanzvergleich Doug Lea: The java.util.concurrent synchronizer framework Science of Computer Programming, Elsevier North-Holland, Inc., 2005, 58, Auszüge Benchmark-Programm Ein Faden ruft mit Wahrscheinlichkeit S gemeinsam genutzten Zufallszahlengenerator auf, der durch Sperre geschützt wird. Mit Wahrscheinlichkeit 1-S wird lokaler Zufallszahlengenerator benutzt. Zweck der Randomisierung Zeitpunkt, wann Sperre gesetzt wird Code in Schleifen kann nicht trivialerweise optimiert werden Tests auf 4 x86-maschinen (Linux 2.4) und 4 UltraSparc-Maschinen (Solaris 9), SUN J2SE 5.0 JDK; alle Programme wurden vor den Messungen 20x ausgeführt 11 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

12 Sperrkonstrukte Performanzvergleich Auszüge (fortgesetzt) Experimente mit verschiedenen Typen von Sperren Builtin: Blockbasiertes Synchronized-Konstrukt Mutex: Eigene, einfache Mutex-Klasse, die eine explizite Sperre implementiert Reentr: ReentrantLock Faden, der die Sperre hält, kann Sperrmethoden wieder aufrufen. Diese kehren ohne Synchronisierungsaufwand sofort zurück. getholdcount() gibt an, wie oft der Faden gesperrt hat; beim Freigeben muss unlock() muss ebenso oft aufgerufen werden fair: ReentrantLock im fair -Modus Bevorzugt länger wartende Fäden beim Zuteilen der Sperre 12 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

13 Sperrkonstrukte Performanzvergleich Schätzungen der Overhead-Zeiten in ns Name builtin mutex reentr fair builtin mutex reentr fair 1P P A P U U U U Builtin: synchronized-konstrukt Mutex: explizite sperre Reentr: ReentrantLock fair: ReentrantLock im fair -Modus Testrechner 1P (1 900 MHz Pentium 3) 2P ( MHz Pentium 3) 2A ( MHz Athlon) 4P ( MHz hyperthreaded Xeon) 1U (1 650 MHz Ultrasparc2) 4U (4 450 MHz Ultrasparc2) 8U (8 750 MHz Ultrasparc3) 24U ( MHz Ultrasparc3) Overhead der Sync.-Konstrukte bei Ausführung mit 1 Faden Zeit ist Differenz zwischen Code mit Synchronisierung (S=1) vs. Code ohne Synchronisierung (S=0) 13 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto Mehraufwand (Overhead) pro Sperre bei S = 1 (jeder Faden ruft immer gemeinsamen Generator auf) und 256 parallelen Fäden

14 Klassen mit atomaren Operationen java.util.concurrent.atomic Enthält Klassen mit atomaren Operationen auf Datentypen wie Boolean, Integer, Referenztypen Beispiel: AtomicInteger Atomar ausführbare Operationen compareandset(int expect, int update) addandget(int delta) getandadd(int delta) decrementandget() getandincrement() 14 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

15 Koordination: Konstrukte für Warten und Benachrichtigung (1) Manchmal müssen Fäden ihre Ausführung stoppen (und Sperren freigeben), bis ein bestimmtes Ereignis eintritt und erst danach ihre Ausführung fortsetzen Methoden in java.lang.object public final void wait() throws InterruptedException; public final void notify(); public final void notifyall(); 15 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

16 Koordination: Konstrukte für Warten und Benachrichtigung (2) Jedes Objekt verwaltet eine interne Warteschlange mit wartenden Fäden Wenn ein Faden die wait-methode eines Objekts o aufruft, dann wird die mit o assoziierte Sperre, die der Faden hält, temporär freigegeben anschließend wird der Faden in die Warteschlange des Objekts o eingereiht und schlafen gelegt Wenn ein anderer Faden notifyall auf demselben Objekt o aufruft, dann weckt o alle Fäden in der Warteschlange auf und ermöglicht ihnen die weitere Ausführung notify() schickt Signal an irgendeine Aktivität aus dieser Warteschlange notifyall() schickt Signal an alle Aktivitäten dieser Warteschlange 16 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

17 Beispiel zu Wait / NotifyAll import java.util.*; /** * Eine Warteschlange. Ein Faden ruft put() auf um ein Objekt in die * Schlange zu legen. Ein anderer Faden ruft get() auf um ein Objekt aus * der Schlange zu nehmen. Wenn Schlange leer ist, wartet get(), bis ein * Objekt da ist (d.h. bis Nachricht von notify da). */ public class WaitingQueue<E> { LinkedList<E> q = new LinkedList<E>(); // Speichert Objekte public synchronized void put(e o) { q.add(o); // Füge Objekt am Ende der Liste hinzu this.notifyall(); // Benachrichtige wartende Fäden, // dass Objekt da public synchronized E get() { while(q.size() == 0) { try { this.wait(); catch (InterruptedException ignore) { return q.remove(0); 17 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

18 Ergänzungen in der Java-Bibliothek java.util.concurrent Die Verwendung von expliziten bzw. feingranularen Sperren ist oft fehleranfällig Viele der Datenstrukturen (z.b. Schlangen) aus dem sequenztiellen Fall sind im parallelen Fall nicht verwendbar, wenn mehrere Fäden simultan darauf arbeiten (engl. not thread-safe ) Ab Java 1.5: java.util.concurrent stellt weitere Klassen zur parallelen Programmierung zur Verfügung Konzepte / Terminologie ähneln z.t. Ada (vgl. Burns & Wellings, Concurrent and Real-Time Programming in Ada, Cambridge, 2007) 18 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

19 Bereitstellung nützlicher Funktionalität, die immer wieder gebraucht wird Kategorien Kollektionen ( Collections ) Konstrukte zur asynchronen Ausführung, Thread Pools Synchronisierer ( Synchronizers ) 19 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

20 Concurrent Collections Eine Kollektion ist eine Gruppe von Objekten Für sequenzielle Verarbeitung bietet Java bereits im Java Collections Framework (java.util) entsprechende Datenstrukturen, z.b. Set: Kollektion ohne Duplikate (Operationen: add, remove, contains,...) SortedSet: Set, in dem Elemente sortiert werden Verschiedene Set-Implementierungen basierend auf Hash-Tabellen, Rot-Schwarz-Bäumen, Arrays, Bitfeldern List: Kollektion, in der Elemente eine Ordnung haben; Duplikate sind erlaubt Map: Menge von Schlüssel/Wert-Paaren (Operationen: put(key, value), get(key), containskey, ) Operationen auf diesen Datenstrukturen sind nicht atomar 20 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

21 Concurrent Collections Ab Java5: java.util.concurrent bietet zusätzliche Kollektionsdatenstrukturen sowie atomare Operationen für sichere Nutzung im parallelen Fall, z.b.: ConcurrentHashMap CopyOnWriteArrayList CopyOnWriteArraySet ConcurrentLinkedQueue Einige benutzen aus Performanzgründen keine synchronized- Konstrukte, sondern explizite Sperren und volatile-modifizierer (volatile bewirkt, dass ein Ergebnis nicht im Zwischenspeicher belassen wird, sondern immer aktualisiert wird. Die parallelen ausgeführten Fäden sehen somit immer den korrekten Variablenwert, da er vor jeder Benutzung aus dem Speicher gelesen und nach einer Änderung sofort wieder zurückgeschrieben wird. Für details (insb. Zusammenhang zu happens-before -Relation) vgl. Beschreibung des Java- Speichermodells. 21 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

22 Concurrent Collections Beispiele ConcurrentHashMap Thread-sichere Implementierung der java.util.map Schnittstelle Benutzt kein synchronized Beliebig viele parallele Leseoperationen ohne Sperren erlaubt Für Schreibzugriffe wird Datenstruktur intern in Segmente unterteilt, die beim Aktualisieren für die Lese-und Schreibzugriffe anderer Fäden gesperrt werden Größe der Segmente kann angepasst werden CopyOnWriteArrayList Thread-sichere Implementierung der java.util.list Schnittstelle Benutzt zur Implementierung ein Array Alle Update-Methoden benutzen synchronized 22 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

23 Modell zur asynchronen Ausführung Situation vor Java 1.5: Rückgabe eines Wertes von einem neu gestarteten Faden an den aufrufenden Faden war umständlich Im Prinzip über gemeinsam genutzte Variable und Synchronisation 23 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

24 Modell zur asynchronen Ausführung Neuer Ansatz ab Java 1.5 Der aufgerufene Faden implementiert die callable Schnittstelle (d.h. es wird die call-methode anstatt run implementiert) Objekt, das callable implementiert, repräsentiert eine Aufgabe, die ein Ergebnis liefert und eine Ausnahme auslösen kann Der aufrufende Faden übergibt ein Objekt, das callable implementiert, mittels submit() an einen Executor und setzt danach seine Ausführung fort Submit liefert ein Future-Objekt zurück Aufrufer liest Ergebnis mittels get() aus Future-Objekt public interface Callable<V> { public V call() throws Exception; 24 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

25 Modell zur asynchronen Ausführung Future Repräsentiert Ergebnis einer Berechnung, das sofort oder in der Zukunft verfügbar sein wird Funktionalität wie bereits besprochen get() liefert das Ergebnis der Berechnung oder blockiert so lange, bis das Ergebnis vorhanden ist Typische Nutzung: Future ist Ergebnis der asynchronen Ausführung einer Callable<V> Aufgabe in einem ExecutorService public interface Future<V> { public V get(); public V get(long timeout, TimeUnit unit); public boolean cancel(boolean mayinterruptifrunning); public boolean iscancelled(); public boolean isdone() ; 25 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

26 Beispiel: Future class CallableExample implements Callable<String> { public String call() { String result = Arbeit fertig ; // tue was return result; ExecutorService es = Executors.newSingleThreadExecutor(); Future<String> f = es.submit(new CallableExample()); //tue was in der Zwischenzeit try { String callableresult = f.get(); catch (InterruptedException ie) {... catch (ExecutionException ee) { Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

27 Executors (1) Executors führen Aufgaben mit Hilfe von Fäden aus Aufgaben werden in einer internen Schlange abgelegt Executor ist eine Schnittstelle; enthält die Methode execute ExecutorService erweitert Executor um Verwaltungsmethoden wie submit, shutdown, invokeall, Executors ist eine Fabrik, die verschiedene Implementierungen von ExecutorService liefert Single Thread Executor: Fixed Thread Pool: Cached Thread Pool: Scheduled Thread Pool: Hat genau einen Arbeiterfaden Thread Pool mit fester Anzahl von Fäden Thread Pool, der Anzahl von Fäden je nach Bedarf erzeugt Erlaubt periodische Ausführung von Aufgaben oder mit bestimmter Verzögerung 27 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

28 Executors (2) - Beispiel class WebServer { Executor pool = Executors.newFixedThreadPool(7); public static void main(string[] args) { ServerSocket socket = new ServerSocket(80); while (true) { final Socket connection = socket.accept(); Runnable r = new Runnable() { public void run() { handlerequest(connection); ; pool.execute(r); 28 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

29 Schlangen Weitere Ergänzungen Blockierende Schlangen Implementieren BlockingQueue-Schnittstelle Datenaustausch zwischen Fäden gemäß dem Erzeuger-Verbraucher- Muster Blockierende Methoden: put, take Erzeuger blockiert, wenn Schlange voll; Verbraucher blockiert, wenn Schlange leer Auch zeitlich beschränke Blockierung möglich offer/poll blockieren nur für eine bestimmte Zeit Produzent Blockierende Schlange Konsument 29 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

30 Schlangen Verschiedene Implementierungen ArrayBlockingQueue basiert auf Array mit fester Größe DelayQueue ordnet Elemente nach Wartezeiten an LinkedBlockingQueue basiert auf verketteter linearer Liste PriorityBlockingQueue Schlange mit unbegrenzter Kapazität, die Elemente gemäß einer Vergleichsoperation anordnet SynchronousQueue basiert auf Schlange mit Kapazität 0. Gedacht als Übergabe bzw. Rendezvous zwischen Fäden (put wartet bis take aufgerufen wird oder umgekehrt). 30 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

31 Beispiel: ArrayBlockingQueue Beispiel Hauptfaden hat eine Schlange, die 10 Zahlen umfassen kann befüllt die Schlange mit Zahlen erzeugt mehrere Arbeiterfäden Arbeiterfaden nimmt eine Zahl aus der Schlange und quadriert sie Blockiert, wenn Schlange leer Bricht ab, wenn spezielle Markierung gelesen wird 31 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

32 Beispiel: ArrayBlockingQueue Arbeiter class Worker extends Thread { //Marker zum Beenden der Arbeit static final Integer NO_MORE_WORK = new Integer(0); BlockingQueue<Integer> q; Worker(BlockingQueue<Integer> q) { this.q = q; public void run() { try {while (true) { //nimm nächste Zahl oder //blockiere, wenn leer Integer x = q.take(); 32 //Abbruch, wenn Marker gefunden if (x == NO_MORE_WORK) {break; // Arbeit int y = x * x; catch (InterruptedException e) { Dr. Victor Pankratius, Dipl.-Inform. Frank Otto Hauptfaden // Erzeuge ArrayBlockingQueue mit Integer final int capacity = 10; BlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(capacity); // Erzeuge Arbeiterfäden final int numworkers = 2; Worker[] workers = new Worker[numWorkers]; for (int i=0; i<workers.length; i++) { workers[i] = new Worker(queue); workers[i].start(); try { //Füge Arbeit in Queue hinzu; //blockiere, wenn voll for (int i=1; i<100; i++) { queue.put(i); //Füge Marker ein, die Worker Ende //signalisieren for (int i=0; i<workers.length; i++) { queue.put(worker.no_more_work); catch (InterruptedException e) {

33 Synchronisierer Werden zur Synchronisation zwischen Fäden verwendet Semaphore Wird mit einer fixen Anzahl von Genehmigungen initialisiert; acquire blockiert, bis eine Genehmigung verfügbar ist und dekrementiert anschließend die Anzahl der Genehmigungen Release inkrementiert die Anzahl der Genehmigungen 33 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

34 Synchronisierer Exchanger Ermöglicht Rendezvous und Datenaustausch zwischen zwei Fäden mittels der exchange-methode Jeder Faden ruft exchange mit einem Objekt auf (das ausgetauscht werden soll) und bekommt nach dem Rendezvous das vom anderen Faden übergebene Objekt Der zuerst ankommende Faden blockiert so lange, bis der zweite exchange aufruft 34 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

35 Synchronisierer - Beispiel: Exchanger class FillAndEmpty { Exchanger<DataBuffer> exchanger = new Exchanger(); DataBuffer initialemptybuffer =... DataBuffer initialfullbuffer = class FillingLoop implements Runnable { public void run() { DataBuffer currentbuffer = initialemptybuffer; try { while (currentbuffer!= null) { addtobuffer(currentbuffer); if (currentbuffer.full()) currentbuffer = exchanger.exchange(currentbuffer); catch (InterruptedException ex) {...handle... class EmptyingLoop implements Runnable { public void run() { DataBuffer currentbuffer = initialfullbuffer; try { while (currentbuffer!= null) { takefrombuffer(currentbuffer); if (currentbuffer.empty()) currentbuffer = exchanger.exchange(currentbuffer); catch (InterruptedException ex) {...handle... void start() { new Thread(new FillingLoop()).start(); new Thread(new EmptyingLoop()).start(); Dr. Victor Pankratius, Dipl.-Inform. Frank Otto Jeder Faden übergibt ein Objekt an exchange- Methode und erhält das vom jeweils anderen Faden übergebene Objekt. Idee: Puffer können zwischen Fäden ausgetauscht werden Faden, der Puffer füllt, übergibt vollen Puffer an Faden, der Puffer leert Faden, der Puffer leert, übergibt leeren Puffer an Faden, der Puffer füllt

36 Synchronisierer CyclicBarrier Synchronisiert Gruppe von n Fäden. Fäden rufen await()-methode auf, die so lange blockiert, bis alle n Fäden warten. Danach wird den Fäden erlaubt, ihre Ausführung fortzusetzen (die Barriere wird zurückgesetzt). Erweiterung: Zusätzliche Runnable-Methode wird ausgeführt, wenn der letzte von n Fäden await() aufgerufen hat. 36 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

37 Synchronisierer CountDownLatch Synchronisiert mehrere Fäden Jeder Faden ruft await() auf und blockiert, bis countdown() count mal aufgerufen wurde Danach wird allen Fäden erlaubt, ihre Ausführung fortzusetzen Erneuter Aufruf von await() hat anschließend keinen Effekt mehr 37 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

38 Beispiel: CountDownLatch Personen warten vor Eingangstür eines Einkaufszentrums mit mehreren Geschäften Zunächst sind alle Geschäfte noch geschlossen, werden aber sukzessive geöffnet (CountDown sukzessive aktualisiert) Erst wenn alle Geschäfte geöffnet haben, wird die Eingangstür zum Einkaufszentrum geöffnet. Dann können die wartenden Personen ins Einkaufszentrum gehen und ihre Einkäufe erledigen CountDownLatch wartende Fäden (hier: Personen) Aktiver Countdown-Faden (hier: herunterzählen der noch geschlossenen Geschäfte) CountDownLatch wartende Fäden werden aktiviert, sobald der Countdown 0 erreicht hat (hier: Personen kaufen ein, sobald alle Geschäfte geöffnet haben) 38 Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

39 Synchronisierer - Beispiel: CountdownLatch public class CountDownLatchSample { private CountDownLatch latch; private int shops = 5; private class Shopper implements Runnable{ public void run() { try {latch.await(); catch (InterruptedException e) {... System.out.println("Juhu, shopping!"); private class Shop implements Runnable { public void run() { System.out.println("Opening shop.."); latch.countdown(); private void simulate() { int shopper = 10; for (int i = 0; i < shopper; i++) { Thread t=new Thread(new Shopper()); t.start(); for (int i = 0; i < shops; i++) { Thread t = new Thread(new Shop()); t.start(); public static void main(...) { new CountDownLatchSample().simulate(); 39 public CountDownLatchSample() { latch = new CountDownLatch(shops); Dr. Victor Pankratius, Dipl.-Inform. Frank Otto

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

Monitore. Klicken bearbeiten

Monitore. Klicken bearbeiten Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition

Mehr

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

Objektorientierte Programmierung

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

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

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

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

2.2 Prozesse in Java

2.2 Prozesse in Java 2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.

Mehr

Softwarelösungen: Versuch 4

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

Mehr

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

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Universität Karlsruhe (TH)

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

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Domänenmodell: Fadenkommunikation und -synchronisation

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

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Einführung in die Programmierung Blockkurs Java

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

Mehr

U08 Entwurfsmuster (II)

U08 Entwurfsmuster (II) U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange

Mehr

Multithreading ab Java 5: Die neuen Concurrency APIs

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

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

Schedulingund Thread-Ausführer

Schedulingund Thread-Ausführer Schedulingund Thread-Ausführer Scheduling Ein Scheduler arbeitet Programmstücke nach einer festen Zeitspanne oder zu einer fixen Zeitpunkt wiederholt oder einmal ab. Notwendigkeiten für Scheduling sind

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

iphone- und ipad-praxis: Kalender optimal synchronisieren

iphone- und ipad-praxis: Kalender optimal synchronisieren 42 iphone- und ipad-praxis: Kalender optimal synchronisieren Die Synchronisierung von ios mit anderen Kalendern ist eine elementare Funktion. Die Standard-App bildet eine gute Basis, für eine optimale

Mehr

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

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

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Technische Dokumentation SilentStatistikTool

Technische Dokumentation SilentStatistikTool Technische Dokumentation SilentStatistikTool Version 1.0 Marko Schröder 1115063 Inhalt Einleitung... 3 Klasse Program... 3 Klasse ArgumentHandler... 3 Bereitgestellte Variablen... 3 Bereitgestellte Methoden...

Mehr

Objektorientierte Programmierung

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

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

2A Basistechniken: Weitere Aufgaben

2A Basistechniken: Weitere Aufgaben 2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

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

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

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

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

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

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Der lokale und verteilte Fall

Der lokale und verteilte Fall Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

C# im Vergleich zu Java

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

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Kapitel 4. Monitore und wechselseitiger Ausschluss

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

Mehr

Vorlesung 7. Multithreading in Java 5: Die neuen Concurrency APIs

Vorlesung 7. Multithreading in Java 5: Die neuen Concurrency APIs Vorlesung 7 Multithreading in Java 5: Die neuen Concurrency APIs 1 Die neuen Pakete ÜBERSICHT DER VORLESUNG java.util.concurrent Standardimplementierungen oftmals benötigter Hilfsmittel in nebenläufigen

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

Dokumentenverwaltung im Internet

Dokumentenverwaltung im Internet Dokumentenverwaltung im Internet WS 09/10 mit: Thema: Workflow und Rollenverteilung im Backend Gruppe: DVI 10 Patrick Plaum und Kay Hofmann Inhalt 1. Benutzer und Benutzergruppen erstellen...2 1.1. Benutzergruppen...2

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

OECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

OECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland OECD Programme for International Student Assessment Deutschland PISA 2000 Lösungen der Beispielaufgaben aus dem Mathematiktest Beispielaufgaben PISA-Hauptstudie 2000 Seite 3 UNIT ÄPFEL Beispielaufgaben

Mehr

Workflows verwalten. Tipps & Tricks

Workflows verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1. Grundlegende Informationen 3 2. Workflows / Genehmigungsprofile verwalten 2.1 Erstes Genehmigungsprofil einrichten 5 2.2 Zweites Genehmigungsprofil einrichten 11 2.3 Workflow

Mehr

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt 14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Statuten in leichter Sprache

Statuten in leichter Sprache Statuten in leichter Sprache Zweck vom Verein Artikel 1: Zivil-Gesetz-Buch Es gibt einen Verein der selbstbestimmung.ch heisst. Der Verein ist so aufgebaut, wie es im Zivil-Gesetz-Buch steht. Im Zivil-Gesetz-Buch

Mehr

SEQUENZDIAGRAMM. Christoph Süsens

SEQUENZDIAGRAMM. Christoph Süsens SEQUENZDIAGRAMM Christoph Süsens DEFINITION Das Sequenzdiagramm gibt Auskunft darüber: Welche Methoden für die Kommunikation zwischen ausgewählten Objekten zuständig sind. Wie der zeitliche Ablauf von

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

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

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel (uli@wuraffel.de) Möglichkeiten, Threads zu definieren Bildung einer

Mehr

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

Schritt 1 - Ein Spielfeld

Schritt 1 - Ein Spielfeld Schritt 1 - Ein Spielfeld Wir beginnen mit zwei einfachen Java-Klassen, dem eigentlichen Spielfeld und dem Applet zum Anzeigen des Spielfeldes (und später der Buttons und der anderen Bedienelemente). Hier

Mehr

teamsync Kurzanleitung

teamsync Kurzanleitung 1 teamsync Kurzanleitung Version 4.0-19. November 2012 2 1 Einleitung Mit teamsync können Sie die Produkte teamspace und projectfacts mit Microsoft Outlook synchronisieren.laden Sie sich teamsync hier

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Nebenläufige und verteilte Programme CS2301

Nebenläufige und verteilte Programme CS2301 Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Netze mit aktiven und reaktiven Knoten Produzent Konsument: aktiv / passiv / reaktiv

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Lösungsvorschläge. zu den Aufgaben im Kapitel 4 Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere

Mehr

Benutzerhandbuch - Elterliche Kontrolle

Benutzerhandbuch - Elterliche Kontrolle Benutzerhandbuch - Elterliche Kontrolle Verzeichnis Was ist die mymaga-startseite? 1. erste Anmeldung - Administrator 2. schnittstelle 2.1 Administrator - Hautbildschirm 2.2 Administrator - rechtes Menü

Mehr

Enigmail Konfiguration

Enigmail Konfiguration Enigmail Konfiguration 11.06.2006 Steffen.Teubner@Arcor.de Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es

Mehr

WPF Steuerelemente Listbox, ComboBox, ListView,

WPF Steuerelemente Listbox, ComboBox, ListView, WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,

Mehr

Design by Contract with JML

Design by Contract with JML Thema: Design by Contract with JML Proseminar: Assertions Verfasser: Literatur: Betreuer: Natalya Moriz Gary T.Leavens and Yoonsik Cheon: Design by Contract with JML Prof. Dr. Heike Wehrheim 1 Inhalt DBC

Mehr

Musterlösungen zur Klausur Informatik 3

Musterlösungen zur Klausur Informatik 3 Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus

Mehr

Outlook Web App 2013 designed by HP Engineering - powered by Swisscom

Outlook Web App 2013 designed by HP Engineering - powered by Swisscom Outlook Web App 2013 designed by HP Engineering - powered by Swisscom Dezember 2014 Inhalt 1. Einstieg Outlook Web App... 3 2. Mails, Kalender, Kontakten und Aufgaben... 5 3. Ihre persönlichen Daten...

Mehr

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten. 1 Einleitung Lernziele automatische Antworten bei Abwesenheit senden Einstellungen für automatische Antworten Lerndauer 4 Minuten Seite 1 von 18 2 Antworten bei Abwesenheit senden» Outlook kann während

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Neuerungen der Ck-Schnittstelle in dms.net 1.9.8 Rev. 4895

Neuerungen der Ck-Schnittstelle in dms.net 1.9.8 Rev. 4895 Neuerungen der Ck-Schnittstelle in dms.net 1.9.8 Rev. 4895 Allgemeine Hinweise: Um die neuen Funktionen nutzen zu können, muss zunächst nur am dms.net-server ein Update auf Version 1.9.8 Rev. 4895 ausgeführt

Mehr

Dokumentation des Projektes Tic Tac Toe

Dokumentation des Projektes Tic Tac Toe Praktikum aus Programmierung Dr. Michael Hahsler Dokumentation des Projektes Tic Tac Toe 0050230 1 Java Projekt: Tic Tac Toe 1. Inhaltsverzeichnis 1. Inhaltsverzeichnis... 2 2. Problemdefinition... 2 3.

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Print2CAD 2017, 8th Generation. Netzwerkversionen

Print2CAD 2017, 8th Generation. Netzwerkversionen Installation der Netzwerkversion Kazmierczak Software Print2CAD 2017, 8th Generation Print2CAD 2017, 8th Generation Netzwerkversionen Einführung Installationshinweise Die Programme von Kazmierczak Software

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

Mehr

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Es kann maximal ein Prozess die Umladestelle benutzen.

Es kann maximal ein Prozess die Umladestelle benutzen. SoSe 0 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung (Musterlösung) 0-06-0 bis 0-06-06 Aufgabe : Erzeuger/Verbraucher-Pattern Ein Getränkemarkt hat

Mehr

Lehrer: Einschreibemethoden

Lehrer: Einschreibemethoden Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms

Mehr

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!. 040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Wir arbeiten mit Zufallszahlen

Wir arbeiten mit Zufallszahlen Abb. 1: Bei Kartenspielen müssen zu Beginn die Karten zufällig ausgeteilt werden. Wir arbeiten mit Zufallszahlen Jedesmal wenn ein neues Patience-Spiel gestartet wird, muss das Computerprogramm die Karten

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

AUSBILDUNG eines OBEDIENCE HUNDES

AUSBILDUNG eines OBEDIENCE HUNDES Beginners, CH (Box, Carré), 15 m entfernt Beginners, CH ab 2017 FCI - 1 (Box, Carré), 15 m entfernt mit Platz, 15 m FCI - 2 FCI - 3 mit Platz und Abrufen, 23 m Voransenden in einen Kreis, dann in ein Viereck

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