Beispielanwendung von Java Threads

Slides:



Advertisements
Ähnliche Präsentationen
Dynamische WEB-Applikationen
Advertisements

Object Relational Mapping (ORM). Objektmodell - Datenbankmodell.
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Klassen - Verkettete Liste -
Anwendungen des OODM auf die ADB / NDB
Threadnocchio Dietrich Boles Nachdenken in Aurich 2009
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Java News & Music Der Chat
Threads Richard Göbel.
Binäre Bäume Richard Göbel.
Sortieren mit Binären Bäumen
Java: Dynamische Datentypen
Listen Richard Göbel.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 9 IO – Streams in Java Sommersemester 2003 Lars Bernard.
Dynamische Webseiten Java servlets.
Nsp Nebenläufigkeit und Objektorientierung ! Hinterfragen: wie verhalten sich die Konzepte Prozesse und Synchronisation zu den KonzeptenKlassen.
Objektorientierte Programmierung JDK-Klassenbibliothek
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Modulare Programmierung
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Das Roboterprojekt Einführung Der erste Entwurf Das Thread-Konzept Hindernisse Website.
Informatikunterricht mit Java
FH-Hof Sortieren mit Binären Bäumen Richard Göbel.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einfach verkettete Listen (OOP)
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
XML-Schnittstellen: SAX, DOM, XML Pull Parsing Timo Terletzki Transformation von XML-Dokumenten.
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik WS 200^8 Dr. Wieland Schwinger
Projekt Alcatraz Java RMI / Spread - Gruppe A4.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Parallel Matrix Multiplication
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Parallel Programming Proofs ( yay !)
Exception Handling in Java
Praxis der Internet-Programmierung
Algorithmen und Datenstrukturen Übungsmodul 6
Equals, Hashcode und CompareTo Micha Kessler
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
2002 XML 10.1XML I (Parsing) 17.1XML II (XLST,XPATH) (keinPraktikum) 24.1XML III FOP 31.1Cocoon2, XSP 7.2Struts, Turbine, Velocity 14.2Testat / Evaluation.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
Letzte Chance!!! Exceptions Thread, Runnable Synchronized Wait, notify, notifyAll Thread States Semaphoren JCSP Swing JOMP Linearizability History Amdahl‘s.
Java Threads Scheduling Lei Chen November 2000 Proseminar.
Proseminar Java Threads. Deadlock und Fairness 1. Deadlock 2. Lockstarvation.
Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.
Javelin Internet-based parallel computing using Java.
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
Dr. Wolfram Amme, Generisches Programmieren, Informatik II, FSU Jena, SS Generisches Programmieren.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Exceptions in der Programmiersprache Java.
 Präsentation transkript:

Beispielanwendung von Java Threads Proseminar Beispielanwendung von Java Threads Vorträger:Koussetou Batawi

Inhalt Data Structures and containers Message Queue   Inhalt Data Structures and containers Message Queue The circular linked List (Doppelt verkettete Kreisförmige Liste) Simple Synchronization Examples Beispielanwendung von der Klasse Barrier Beispielanwendung von der Klasse ProcessIt A Network Server Class

Realisierung von Nachrichtenaustausch zwischen Threads in Java Rolle der Message Queue MsgQueue ist eine Technik des IPC (Interprocess Communication) benutzt in Unix Systemen Realisierung von Nachrichtenaustausch zwischen Threads in Java Basiert auf der Vector-Klasse von Java Zwei Methoden werden benutzt:   Eine Methode send(), um data zu anderem System zu schicken. - Eine Methode recv(), ist von einem System exekutiert damit eine data zu nehmen.

Circular Linked List Container-Klasse Doppeltverkettete Liste Operationen Insert Delete Find Locate Get

Beipiel:Modell Entwurf next prev data Class CircularListNode{ Object 0; CircularListNode next; CircularListNode prev; }

Methode insert(); -Einfügen von Daten in der Liste. Public class CircularList{ pivate CircularListNode current; public synchronized void insert (Object o){ CircularListNode tn = new CircularListNode(); tn.o = 0; if(current = = null){ tn.next = tn.prev = tn; current = tn; }else{ tn.next = current; tn.prev = current.prev; current.prev.next = tn; current.prev = tn;   } Rolle -Einfügen von Daten in der Liste. -Ein Arbeitzeiger der Klasse CircularListNode,der auf den Knotenpunkt zeigt hinter dem ein neues Element eingefügt wird

Methode delete   public synchronized void delete(Object o){ CircularlistNode p = find(o);   CircularlistNode next = p.next;   CircularlistNode prev = p.prev;   if(p = = p.next){   current = null;   return; }  prev.next = next;  next.prev = prev;  if(current = = p) current = next; Rolle  -Löschen eines Elements aus der Liste indem man das Element in Parameter eingibt. -Suche des Element in der Liste, -Löschen des Elements.

Methode find Rolle -Suche nach bestimmten Element durch die Liste. Private CircularlistNode find(Object o){ CircularlistNode p = current; if(p = = null); throw new IllegalArgumentException(); do {   if(p.o = = o) return p;   p = p.next;   }While (p = = current);   throw new IllegalArgumentException(); } Rolle  -Suche nach bestimmten Element durch die Liste. - Zurückgabe des Elements -Fehler Meldung sonst.  

-suche nach einem bestimmten Datensatz in der Liste Methode locate();   public synchronized Object locate (Object o) { CircularlistNode p = current; do{ if(p.o.equals(o)) return p.o; p = p.next; } While (p! = current); throw new IllegalArgumentException(); Rolle -suche nach einem bestimmten Datensatz in der Liste -Übergabe des Datensatzes als Parameter an die Methode.

Methode getnext(); Rolle   Public Synchronized Object getNext() { if (current = = null); return null; current = current.next; returncurrent.o; }  Rolle -Ausgabe des Datensatzes des Knoten nach dem Arbeitspeicher. -Incrementierung des Arbeitspeichers um eins. -Ausgabe des Datensatzes von Arbeitspeicher.

Thread unsafe Problem: Paralleles Einfügen und Löschen 1 2 3 insert (x) delete (2) 3 x 1 2 x 1 2 3

Thread safe Realisierung x 1 2 3 INSERT(); x 2 1 3 DELETE(); 1 x 3 Die Methoden sind synchronisiert

Thread safe Implementierung Performance Aspekte Nachteil: Zeitaufwand Vorteil: korrektes Verhalten bei mehreren Threads Containerklassen in Java 2, thread unsafe Realisierungen collection classes

Wait Notify Synchronization Generell Wait und notify können nur innerhalb einer synchronisierten Region ausgeführt werden. Sie beziehen sich auf das entsprechend gesetzte Lock. Methode wait( ) Blockiert thread und gibt lock frei Methode notify( ) Weckt einen wartenden Thread auf. Dieser wartet aber auf lock. Methode notifyAll( ) Weckt alle artenden Threads auf.

Barrier Synchronisation aller Threads Barrier-Klasse Mehrere Synchronisationspunkte werden durch eigene Barrier-Objekte realisiert.

Barrier: WaitForRest class barrier { private int threads2wait4; ..... public Synchronized int waitForRest(){  int threadNum = --threads2wait4; if(threads2wait4 <= 0){   notifyAll();   return threadNum; } if (threads2Wait4>0){ wait(); return threadNum;

Vergleich zwischen Barrier und join() Methoden Thread 1 Thread 1 Thread 2 Thread 2 Thread 3 Thread 3 Thread 4 Thread 4 Thread 1 Thread 1 Thread 5 Thread 2 Thread 6 Thread 3 Thread 7 Thread 4

Methode Join(); Class Thread1 implement Runnable{ Thread2 aufgabe2; ....   public void runn( ){ aufgabe2 = new Thread2; aufgabe2.start( ); aufgabe3 = new Thread3; aufgabe3.start( ); aufgabe4 = new Thread4; aufgabe4.start( ); aufgabe1(); aufgabe2.join(); aufgabe3.join(); aufgabe4.join(); ... }

class Thread1 implements Runnable{ ... Thread4 aufgabe4; Thread5 aufgabe5; Thread6 aufgabe6; Thread7 aufgabe7;   Public void runn( ){ aufgabe4.join(); aufgabe5 = new Thread5; aufgabe5.start( ); aufgabe6 = new Thread6; aufgabe6.start( ); aufgabe7 = Thread7; aufgabe7 .start( ); aufgabe5.join(); aufgabe6.join(); aufgabe7.join(); }

Barrier Beispiel public class processIt implement Runnable{ Barrier bp1=new(4); Barrier bp1b=new(4); Barrier bp2=new(4); Barrier bp2b=new(4); Barrier bpStart=new(4); Barrier bpEnd=new(4); public void runn(){ int I = bpStart.waitForRest(); doPhaseOne(is [i] ); if(bp1.waitForRest() == 0) doPhaseTwoSetup(); bp1b.waitForRest(); doPhaseTwo(is[i]); if(bp2.waitForRest() == 0) doPhaseThreeSetup(); bp2b.waitForRest(); doPhaseThree(is[i]); bpEnd.waitForRest(); }

Vor- und Nachteile von Barrier Nachteile:zeit aufwand bei Thread Implementierung mit Barrier Klasse. Vorteile:In dieser java Bibliothek sind Methoden synchronisiert also verfügbar überall

Verbindung zwischen Clients und Server A Network server class Clt1 soc Clt2 soc Cltn soc Socket(server) Socket(data) Verbindung zwischen Clients und Server

Class TCPserver Import java.net.* ; Import.io.* ;  public class TCPServer implements cloneable,Runnable{ Thread runner = null; serverSocket server = null; socket data = null; boolean shouldStop = false; public synchronized void startServer (int port) throws IOException{ if(runner = = null){ server = new serverSocket(port); runner = new Thread(this); runner.start(); }  }  

Methode stopServer public synchronized void stopServer( ){ if(server != null) { shouldStop = true; runner.interrupt( );   runner = null;  try{ server closed( );   }catch (IOException ioe){ } server = null; }

Methode run public void run(){ if(server != null){ While(!shouldStop){ Try{ Socket datasocket = server.accept(); TCPServer newSocket = (TCPServer) close(); newsocket.server = null; newsocket.data = datasocket ; newsocket.runner = new Thread(newSocket); newsocket.runner.start(); }catch{Exception e} {} }  }else{ run(data);  } public void run socket data{ } }.

Zusammenfassung Data structures and Containers : Mit MsgQueue ;eine Technik des IPC in Unix,damit erzeugenes objekt zwischen threads passt Implementierung einer Doppelt Verkettete Kreisförmige Liste und das Speichern von zusammengehörenden Daten. Simple Synchronization Examples mit Anwendung von Barrier wo die wait(),notify()und notifyAll() Methoden sind benutzt und machen den Unterschied zwischenSafe und Unsafe Threads. Barrier ist von ProcessIt Class benutzt Da wird auch einen Vergleich zwischen Barrier Klasse und join() Methode gemacht. Network Server Class Diese Klasse zeigt die Beziehung zwischen Clients und Server