|
|
- Hilke Ritter
- vor 8 Jahren
- Abrufe
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 Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections
MehrMonitore. 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
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,
MehrObjektorientierte 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
MehrObjektorientierte 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/
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(),
MehrGroß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,
MehrEinfü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
MehrProgrammierkurs 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
Mehr2.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.
MehrSoftwarelö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]
MehrSysteme 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
MehrUniversitä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
MehrEinfü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
MehrDomä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
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:
MehrEinfü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()
MehrU08 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
MehrMultithreading 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
MehrJava 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]...
MehrSchedulingund 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
MehrJava: 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
MehrJava 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
Mehriphone- 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
MehrVerhindert, 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:
Mehr5. 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
MehrTechnische 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...
MehrObjektorientierte 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)
MehrJava 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
Mehr2A 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
MehrProgrammieren 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
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
MehrMulti-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
MehrGrundlagen 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)
MehrAGROPLUS 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
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
MehrSoftware 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
MehrDer 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
Mehr5 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
MehrZwischenablage (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
MehrStudentische 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
MehrGrundlagen 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.:
Mehr1 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
MehrAbteilung 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
MehrInstitut 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
MehrC# 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
MehrZä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 --
MehrGrundlagen 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)
MehrKapitel 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
MehrVorlesung 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
MehrErweiterung 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
MehrDelegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
MehrDokumentenverwaltung 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
MehrModellierung 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; {
MehrJavakurs 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,
MehrJava-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
MehrEinfü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
MehrEinfü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
MehrOECD 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
MehrWorkflows 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
Mehr14.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...
MehrOutlook. 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
MehrStatuten 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
MehrSEQUENZDIAGRAMM. 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
MehrDas 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
MehrZur 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
MehrL10N-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
MehrApplet 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
MehrSchritt 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
Mehrteamsync 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
MehrComputeranwendung 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
MehrSoftware 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
MehrNebenlä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
MehrLö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
MehrBenutzerhandbuch - 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ü
MehrEnigmail 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
MehrWPF 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,
MehrDesign 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
MehrMusterlö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
MehrOutlook 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...
Mehr1 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
Mehr1 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
MehrNeuerungen 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
MehrDokumentation 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.
MehrEinfü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
MehrPrint2CAD 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
MehrBinä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
MehrPraktikum 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
MehrFachgebiet 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
MehrInnere 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
MehrEs 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
MehrLehrer: 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
MehrTest-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
MehrWü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
MehrEinfache 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"
MehrSEP 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
MehrWir 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
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:
MehrAUSBILDUNG 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
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
Mehr