Muster nebenläufiger Programmierung. concurrent Packet von Java. Alois Schü;e AOSD 1
|
|
- Eleonora Koch
- vor 6 Jahren
- Abrufe
Transkript
1 Muster nebenläufiger Programmierung concurrent Packet von Java Alois Schü;e AOSD 1
2 Concurrent Packet In diesem Teil der Veranstaltung werde Muster nebenläufiger Programmierung diskueert. Dazu wird das concurrent Packet von Java betrachtet. Alois Schü;e AOSD 2
3 Concurrent Packet - Überblick Standard- Mi;el von Java bezogen auf Nebenläufigkeit sind: Threads mit dem Interface Runnable SynchronisaEons- Mechanismen synchronized, wait, notify und notifyall. Ab Java 5 sind im Paket java.util.concurrent Klassen für Standard- Muster der parallelen Programmierung enthalten, z.b.: Locks Queues Thread- Pooling Scheduling Semaphore Exchanger CountDownLatch CyclicBarrier Alois Schü;e AOSD 3
4 Concurrent Packet - Locks Lockkonzept Ein Lock ist ein Mi;el, um in mul$threading Umgebungen den gemeinsamen Zugriff auf Ressourcen zu koordinieren. Um eine Ressource nutzen zu können, muss ein Thread den zugehörigen Schlüssel anfordern. Solange ein Thread den Schlüssel besitzt, kann kein anderer Thread die Ressource verwenden, er muss warten. Der den Schlüssel besitzende Thread gibt ihn frei, darau\in kann ein wartender Thread den Schlüssel bekommen und die Ressource verwenden. Dieses Lockkonzept könnte mit synchronized umgesetzt werden. Dabei hat man aber immer die Blockstruktur als Einschränkung. java.util.concurrent.locks beinhaltet Interfaces und Klassen für Locks. Alois Schü;e AOSD 4
5 Concurrent Packet - Locks Die Klasse TimeUnit wird im Zusammenhang mit Locks verwendet, um eine Zeitdauer in SECONDS, MICROSECONDS, MILLISECONDS oder NANOSECONDS angeben zu können. $ cat TimeUnit/MainClass.java import static java.util.concurrent.timeunit.*; public class MainClass extends Thread { // This field is volatile because two different threads may access it volatile boolean keeprunning = true; public void run() { while (keeprunning) { long now = System.currentTimeMillis(); System.out.printf("%tr%n", now); try { Thread.sleep(1000); // millisecs catch (InterruptedException e) { return; // run In der run- Methode wird die Methode sleep von Thread verwendet. Es wird eine Sekunde geschlafen. Alois Schü;e AOSD 5
6 Concurrent Packet - Locks $ public void pleasestop() { keeprunning = false; public static void main(string[] args) { MainClass thread = new MainClass(); thread.start(); try { SECONDS.sleep(10); // = MILLISECONDS.sleep(10000) catch (InterruptedException ignore) { thread.pleasestop(); // main Innerhalb main wird SECONDS von TimeUnit verwendet, um das Programm 10 Sekunden lang laufen zu lassen. $ java MainClass 10:19:51 AM 10:19:52 AM 10:19:53 AM 10:19:54 AM 10:19:55 AM 10:19:56 AM 10:19:57 AM 10:19:58 AM 10:19:59 AM 10:20:00 AM $ Alois Schü;e AOSD 6
7 Concurrent Packet - Locks Das Interface Lock spezifiziert das Verhalten von Lock- Objekten. public interface Lock { void lock(); void lockinterruptible() throws InterruptedException; boolean trylock(); boolean trylock(long time, TimeUnit unit) throws InterruptedException void unlock(); Condition newcondition(); // Erklärung später lock wartet, bis der Objektschlüssel verfügbar ist und belegt ihn dann. unlock gibt das Objekt frei. lockinterruptible funkeoniert wie lock, aber es wird eine Ausnahme geworfen, wenn ein anderer Thread den Thread durch interrupt unterbricht. trylock liefert false, wenn das Objekt nicht verfügbar ist; ansonsten wird das Objekt in Besitz genommen und true returniert. trylock(long, TimeUnit) funkeoniert wie trylock, aber es wird eine maximale Zeitspanne gewartet, wenn das Objekt nicht verfügbar ist. Alois Schü;e AOSD 7
8 Concurrent Packet Locks - ReentrantLock Die Klasse ReentrantLock implemeneert die Schni;stelle Lock. public class ReentrantLock implements Lock, Serializable { public ReentrantLock(boolean fair); public ReentrantLock; // Methods of Lock void lock(); void lockinterruptible() throws InterruptedException; boolean trylock(); boolean trylock(long time, TimeUnit unit) throws InterruptedException void unlock(); Condition newcondition(); // additional Methods public boolean isfair(); public int getholdcount(); public int getqueuelength(); public boolean isheldbycurrentthread(); public boolean islocked(); protected Thread getowner(); protected Collection<Thread> getqueuedthreda(); Alois Schü;e AOSD 8
9 Concurrent Packet Locks - ReentrantLock Der Konstruktor kann die Angabe eine fair- Paramerters haben. Wenn mehrere Threads auf den Lock warten, garaneert fair==true, dass der am längsten wartende Thread das Lock- Objekt erhält. isfair liefert den fair- Parameter des Konstruktors zurück. Ein Lock enthält eine Zähler, der bei jedem lock inkremeneert, bei unlock dekremeneert wird. Ein Thread kann also öier lock aufrufen. getholdcount liefert den Wert des Zählers. getqueuelength returniert die Anzahl der auf einen Lock wartenden Threads. isheldbycurrentthread ist true, wenn der aufrufende Thread den Lock hält. islocked ist true, wenn irgendein Thread den Lock hält. getowner(), CollecEon<Thread> getqueuedthreads liefern den Besitzer und die wartenden Threads. Alois Schü;e AOSD 9
10 Concurrent Packet Locks - ReentrantLock Beispiel: Klasse Konto (Account), Geldabholer (Withdrawer als Thread) Zunächst die Realisierung der Klasse Account mit synchronized. $ cat ReentrantLock/synchronized/WithdrawApp.java class Account { private float balance; public Account (float initialbalance) { balance = initialbalance; public synchronized float getbalance() { return balance; // getbalance public synchronized void withdraw( float amount) { if (amount < 0 balance < amount) throw new IllegalArgumentException("withdraw: wrong amount " + amount); try { Thread.sleep(1000); catch (Exception e) {; balance -= amount; // withdraw // Account synchronized ist erforderlich, da ein Konto von mehreren Threads verwendet werden kann und mindestens einer den Zustand per withdraw ändern kann. Alois Schü;e AOSD 10
11 Concurrent Packet Locks - ReentrantLock Nun die Realisierung der Klasse Account mi;els Locks. Die Blockstruktur von synchronized muss mi;els lock und unlock nachgebildet werden: import java.util.concurrent.locks.*; private final ReentrantLock lock = new ReentrantLock(true); lock.lock(); try {... finally { lock.unlock(); WichEg: Da im try- Block Ausnahmen auireten können ist mi;els finally sicherzustellen, dass stets unlock aufgerufen wird! Nur so werden gelockte Objekte immer freigegeben. Die Verwendung von lock- unlock ist also aufwendiger, dafür aber universell: ein Thread kann lock aufrufen, ein andere unlock Soll anstelle einer Objektsperre eine Klassensperre deklariert werden, wird die Lock- Variable als sta$c definiert. Alois Schü;e AOSD 11
12 Concurrent Packet Locks - ReentrantLock $ cat ReentrantLock/ReentrantLock/WithdrawApp.java import java.util.concurrent.locks.*; class Account { private float balance; private final ReentrantLock lock = new ReentrantLock(true); public Account (float initialbalance) { balance = initialbalance; // Account public float getbalance() { lock.lock(); try { return balance; finally {lock.unlock(); // getbalance public void withdraw( float amount) { lock.lock(); try { if (amount < 0 balance < amount) throw new IllegalArgumentException("withdraw: wrong amount " + amount); try { Thread.sleep(1000); catch (Exception e) {; balance -= amount; finally {lock.unlock(); // withdraw // Account Alois Schü;e AOSD 12
13 Concurrent Packet Locks - ReentrantLock Was muss geändert werden, wenn Jenni und Hannah nicht gleichzeieg Geld abholen dürfen? Idee: Der erste Abholer hält den Lock, der zweite muss abgewiesen werden. Lösung: trylock anstelle von lock $ cat ReentrantLock/tryLock/WithdrawApp.java public void withdraw( float amount ) { if (lock.trylock() == false) return; try { if (amount < 0 balance < amount) throw new IllegalArgumentException("withdraw:...); try { Thread.sleep(1000); catch (Exception e) {; balance -= amount; finally { lock.unlock(); // withdraw Alois Schü;e AOSD 13
14 Concurrent Packet Locks - CondiEon Die Methode newcondi$on des Interface Lock liefert ein CondiEon- Objekt zurück. Genauer, ein Objekt einer Klasse die die Schni;stelle CondiEon implemeneert. public interface Condition { void await() throm InterruptedException; void awaituninterruptibly(); boolean await(long time Timeunit unit) throm InterruptedException; long awaitnanos(long time) throm InterruptedException; boolean awaituntil(date deadline) throm InterruptedException; void signal(); void signalall(); Die Methoden haben Ähnlichkeit zu wait und noefy. Eine CondiEon ist signalisiert oder nicht signalisiert. Sofort nach ihrer Erzeugung ist sie signalisiert. Ein await- Aufruf ( wait) auf einer signalisierten CondiEon kehrt sofort zurück. Vor Rückkehr von await wird die CondiEon in den nicht signalisierten Zustand versetzt. signal ( noefy) versetzt eine CondiEon in den signalisierten Zustand, weckt also einen wartenden Thread signalall ( noefyall) weckt alle auf die CondiEon wartenden Threads. Alois Schü;e AOSD 14
15 Concurrent Packet Locks - CondiEon Beispiel: BoundedBuffer, zunächst mit synchronized. $ cat Condition/BoundedBuffer/synchronized/BoundedBufferApp.java class BoundedBuffer { private float[] buffer; private int first, last; private int numberinbuffer = 0, size; BoundedBuffer(int length) { size = length; buffer = new float[size]; first = last = 0; public synchronized void dumpbuffer() { System.err.print("Buffer: "); // use err channel to log for (int i=(first+1)%size, j=0; j<numberinbuffer; j++, i=(i+1)%size) System.err.print(buffer[i] + " "); System.err.println(" "); float Puffer fester Grösse dumpbuffer zum Debuggen des Puffers über stderr Alois Schü;e AOSD 15
16 Concurrent Packet Locks - CondiEon Beispiel: BoundedBuffer, zunächst mit synchronized. $ cat Condition/BoundedBuffer/synchronized/BoundedBufferApp.java class BoundedBuffer { private float[] buffer; private int first, last; private int numberinbuffer = 0, size; BoundedBuffer(int length) { size = length; buffer = new float[size]; first = last = 0; public synchronized void dumpbuffer() { System.err.print("Buffer: "); // use err channel to log for (int i=(first+1)%size, j=0; j<numberinbuffer; j++, i=(i+1)%size) System.err.print(buffer[i] + " "); System.err.println(" "); float Puffer fester Grösse dumpbuffer zum Debuggen des Puffers über stderr Alois Schü;e AOSD 16
17 Concurrent Packet Locks - CondiEon Beispiel: BoundedBuffer, zunächst mit synchronized. public synchronized void put(float item) throws InterruptedException { while(numberinbuffer == size) wait(); last = (last+1)%size; numberinbuffer++; buffer[last] = item; dumpbuffer(); notifyall(); public synchronized float get() throws InterruptedException { while(numberinbuffer == 0) wait(); first = (first+1)%size; numberinbuffer--; dumpbuffer(); notifyall(); return buffer[first]; // BoundedBuffer Die Methoden put und get sind mi;els synchronized synchronisiert. last ist Einfügestelle. von first wird gelesen. Alois Schü;e AOSD 17
18 Der Produzent verwendet die put- Methode: Concurrent Packet Locks - CondiEon class Producer extends Thread { private BoundedBuffer buffer; public Producer(BoundedBuffer b) { buffer = b; public void run() { for(int i = 0; i < 100; i++) { try { buffer.put(i); System.out.println("put " + i); catch (InterruptedException ingnored) {; // Producer Alois Schü;e AOSD 18
19 Concurrent Packet Locks - CondiEon Wie kann man dies nun mi;els CondiEon realisieren und wo sind die Vorteile? $ cat Condition/BoundedBuffer/condition/BoundedBufferApp.java class BoundedBuffer { private float[] buffer; private int first, last; private int numberinbuffer = 0, size; private ReentrantLock lock = new ReentrantLock(); private final Condition notfull = lock.newcondition(); private final Condition notempty = lock.newcondition(); BoundedBuffer(int length) {... public void dumpbuffer() {... lock ist ein ReentrantLock Objekt. Es gibt zwei Condi$on AKribute, notfull und notempty für das Objekt lock. Alois Schü;e AOSD 19
20 Concurrent Packet Locks - CondiEon put: public void put(float item) throws InterruptedException { lock.lock(); try { while(numberinbuffer == size) notfull.await(); last = (last+1)%size; numberinbuffer++; buffer[last] = item; dumpbuffer(); notempty.signal(); finally { lock.unlock(); Wenn der Buffer voll ist, wird gewartet, bis eine Condi$on notfull signalisiert wird. Nach dem Schreiben in den Buffer wird signaliert notempty. Alois Schü;e AOSD 20
21 Concurrent Packet Locks - CondiEon get: public float get() throws InterruptedException { lock.lock(); try { while(numberinbuffer == 0) notempty.await(); first = (first+1)%size; numberinbuffer--; dumpbuffer(); notfull.signal(); return buffer[first]; finally { lock.unlock(); Wenn der Buffer leer ist, wird gewartet, bis eine Condi$on notempty signalisiert wird. Nach dem Lesen des Buffer wird signaliert notfull. Insgesamt ist man also mit Locks und CondiEons flexibler, man kann unterschiedliche Bedingungen signalisieren und so gezielt nur bes$mmte Threads wecken (eben die die auf die CondiEon warten). Alois Schü;e AOSD 21
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
MehrDas Monitorkonzept Brinch-Hansen
Das Monitorkonzept (nach Hoare/Brinch Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger Ausschluss, mutual exclusion. Geschützte
MehrAlgorithmen und Programmierung IV: Nichtsequentielle Programmierung. Robert Tolksdorf. Freie Universität Berlin
Algorithmen und Programmierung IV: Nichtsequentielle Programmierung Robert Tolksdorf Freie Universität Berlin Überblick Überblick Sperrsynchronisation Sperrsynchronisation in Datenbanken Bedingungssynchronisation
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
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,
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
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
MehrAlgorithmen und Datenstrukturen II
Algorithmen und Datenstrukturen II Bioinformatics Resource Facility Center for Biotechnology Vorlesung Sommer 2010 Teil I Nebenläufigkeit (Threads) Multitasking moderne Betriebssysteme (Solaris, MacOS
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung
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.
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
MehrSynchronisation von Variablen und Operationen (gemeinsamer Speicher)
Synchronisation von Variablen und Operationen (gemeinsamer Speicher) Vorbemerkung Beispiel für Wettlaufbedingungen Threadsicherheit Unveränderliche Objekte Volatile-Deklaration Atomare Operationen Lock-Mechanismen
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
MehrNebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE)
CNAM Wintersemester 2014 / 2015 Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE) Im Rahmen von: Betriebssysteme und nebenläufige Anwendungen Agenda Nebenläufigkeit in Java Anwendungen Basisfunktionen
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste
MehrJava-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
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
MehrBetriebssysteme. Wintersemester 2015. Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com
Betriebssysteme Wintersemester 2015 Kapitel 2 Prozess und Threads Patrick Kendzo ppkendzo@gmail.com Programm Inhalt Einleitung Prozesse und Threads Speicherverwaltung Eingabe und Ausgabe Dateisysteme Zusammenfassung
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()
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
MehrSoftware 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
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
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
MehrGrundlagen zur nebenläufigen Programmierung in Java
Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei
MehrVariablen manipulieren per JDI
Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt
MehrNebenläufige Programmierung I
Nebenläufige Programmierung I Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS06 2 Ziele Grundlegende Begriffe der nebenläufigen Programmierung verstehen lernen Nebenläufige Programme
MehrJava Real-Time Specification
Ausgewählte Kapitel eingebetteter Systeme Java Real-Time Specification Tobias Distler 05.07.2006 Java und Echtzeit? Problem Nichtdeterministisches Verhalten der Garbage Collection Weitere Nachteile Scheduling
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
MehrNebenläufige Programmierung in Java
Informatik IV 37-004 SS 2002 Thomas Gross Diese Slides kommen ohne Gewähr. 9-1 Thomas Gross 1997-2000 Nebenläufige Programmierung in Java Threads und deren Zustände Speichermodell Einfache Synchronisation
MehrLeJOS: Mindstorms in Java programmieren
LeJOS: Mindstorms in Java programmieren Alexander Koller Softwareprojekt "Sprechende Roboter" 30. April 2004 Überblick Warum Java? Was ist LeJOS? Motoren steuern Auf Sensoreingaben reagieren Wie geht's
MehrAK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de
Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben
MehrParallele Programmierung in Java
PPJ-1 Parallele Programmierung in Java Prof. Dr. Uwe Kastens Sommersemester 2000 Vorlesung Parallele Programmierung in Java SS 2000 / Folie 01 PPJ-2 Ziele und Durchführung Die Studierenden sollen grundlegende
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
Mehr1. Der Einstieg in Java. Was heißt Programmieren?
1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung
Mehr// Zeigt den insgesamt einbezahlten Betrag auf der Bank. // Muss 1600 GE sein. System.out.println("Current Bank balance: " + b.
/ Testtreiberklasse, welche das Bankensystem testet. Es werden neue Bankkonten angelegt und Geld deponiert, abgehoben und transferiert. public class Main { / Main Methode fuehrt bestimmte Testfaelle aus.
MehrGrundlagen der Informatik Ausnahmebehandlung & Threads
Grundlagen der Informatik Ausnahmebehandlung & Threads Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Inhalt Ausnahmebehandlung
MehrJava - Programmierung - Objektorientierte Programmierung 1
Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1
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
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
MehrVS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel
VS4 Slide 1 Verteilte Systeme Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel Inhaltsverzeichnis für die Vorlesung Zur Motivation: 4 Beispiele aus der Praxis Allgemeine Anforderungen an Verteilte
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrÜbersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung
Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des
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
MehrÜbung zu Grundlagen der Betriebssysteme. 9. Übung 11.12.2012
Übung zu Grundlagen der Betriebssysteme 9. Übung 11.12.2012 Wechselseitiger Ausschluss Wechselseitiger Ausschluss: 1) Softwareansätze Dekker-Algorithmus Peterson-Algorithmus 2) Unterstützung durch Hardware
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
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
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrDatenbankanwendungsprogrammierung Crashkurs Java
Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung
MehrProblemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrCS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)
Prof. Dr. Th. Letschert CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Vorlesung 7 Th Letschert FH Gießen-Friedberg Ressourcen Verwaltung passive Ressourcen aktive Ressourcen
MehrAllgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen
5. Mocking Allgemein: Klassen testbar machen Wie werden Klassen testbar Entwicklung von Mocks mit der Hand Einführung in JMock Spezifikation von Mocks mit JMock Wann ist Mocking-Werkzeug sinnvoll Literatur:
MehrÜbung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
MehrJava Game Development Fabian Birzele Programmierpraktikum 2008 / 2009
Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009 Fabian Birzele, LMU Institut für Informatik, Lehrstuhl für Praktische Informatik und Bioinformatik, 2008: Programmierpraktikum 1 Ziele
Mehr#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt
Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)
MehrBeispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf
16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
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
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die
MehrTesten mit JUnit. Martin Wirsing. Ziele. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang
Testen mit JUnit Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 12/04 2 Ziele Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen 3 Testen Da
MehrJava für Computerlinguisten
Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009
MehrPrimitive Datentypen
Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.
MehrAnleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)
Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite
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,
MehrInfrastruktur und Betriebssysteme III. Martin Plümicke
Infrastruktur und Betriebssysteme III Martin Plümicke 25. Februar 2002 Inhaltsverzeichnis 1 Einführung in Betriebssysteme 3 2 Überblick 7 2.1 Systemkomponenten.................................. 7 2.1.1
MehrVerteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Verteilte Programme und Anwendungen I - Verteilte Programme Verteilte Algorithmen und verteilte Programme Programm
Mehr1. Der Einstieg in Java
1. Der Einstieg in Java Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen
MehrLinux Prinzipien und Programmierung
Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2014 1 / 28 Kritische Bereiche bei Threads Deadlocks Conditions/Semaphore 2 / 28 Beispiel aus der letzten Vorlesung
MehrBeispiel: DB-Mock (1/7)
Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrSichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben
Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE24-KlassenUndObjekteFort (Stand 28.09.2012) Aufgabe 1: Implementieren Sie eine Klasse Student. Die Klasse soll eine Methode immatrikulieren haben,
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
Mehri n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging
Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des
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
MehrThemen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
MehrInfo: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen
Info: Standard DO-178B Zertifizierung Federal AviationAdministration (FAA), Software für Luftverkehrssysteme durch Standard DO-178B für requirement-based Tests and Code Coverage Analyse DO-178B-Levels
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
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrEinführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrTeilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2005/2006
Universität Mannheim Fakultät für Mathematik und Informatik Dr. Heinz Kredel Teilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2005/2006 Name:.................................
Mehram Beispiel von JUnit
Aufbau eines Testwerkzeugs am Beispiel von JUnit Üblicher Ansatz für Tests und Fehlersuche: Print-Befehle, Debugger-Ausdrücke, Test-Skripte möglichst über globale Variable debug steuerbar Command Pattern
Mehr7. Performance und Speicherauslastung
7. Performance und Speicherauslastung Java-Parameter mit Performance-Einfluss Versteckte Speicherlecks Direkte Zeitmessung in Java Konzept von Performance-Messwerkzeugen Netbeans-Profiler Software-Qualität
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
MehrSoftware-Engineering Software-Management
Software-Engineering Software-Management 12.3 Unit-Tests mit JUnit - Wissen, was der Sourcecode macht! Lösung Prof. Dr. Rolf Dornberger Software-Engineering: 12.3 Unit-Tests mit JUnit 30.04.2006 1 12.3
MehrRemote Method Invocation
Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
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)
MehrLösung zu Praktikum 1 -Programmierung eines Java Card Applets-
Lösung zu Praktikum 1 -Programmierung eines Java Card Applets- Björn Wontora, Holger Plett, Christian Linke, Karsten Reineck, Sven Siek, Andreas Kupfer Phasen beim Cardlet Entwurf 1. Funktionen des Applets
MehrTCP/IP Programmierung. C# TimeServer Java6 TimeClient
TCP/IP Programmierung C# TimeServer Java6 TimeClient Stand 19.10.11 21:24:32 Seite 1 von 16 Inhaltsverzeichnis Erläuterung...3 Software...3 C#TimeServer...4 Klasse ServerThread...6 Starten und Beenden...7
MehrPraktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel
Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String
MehrAngewandte IT-Sicherheit
Angewandte IT-Sicherheit Johannes Stüttgen Lehrstuhl für praktische Informatik I 30.11.2010 Lehrstuhl für praktische Informatik I Angewandte IT-Sicherheit 1 / 28 Aufgabe 1 Betrachten sie folgendes Programm:
Mehr4. Thread- und Netzwerk- Programmierung
4. Thread- und Netzwerk- Programmierung 4.1 Ziel dieses Kapitels 4.2 Prozeß versus Thread 4.3 Thread-Programmierung 4.4 TCP/IP Grundlagen 4.5 TCP Programmierung 3. TCP/IP und Threads 3-1 4.1 Ziel dieses
MehrUniversität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr.
Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr. Martin Müller Informatik II 2. Semesterklausur Prüfungsmodul Informatik II
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
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
Mehr