parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

Ähnliche Dokumente
Parallele Prozesse. Prozeß wartet

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Lebenszyklus von Threads

Javakurs für Fortgeschrittene

Dr. Monika Meiler. Inhalt

Vorlesung Informatik II

Synchronisation in Java. Invisible Web

Praktikum aus Softwareentwicklung 2, Stunde 5

Ausnahmebehandlung in Java

Beispiel für überladene Methode

Aufgabenblatt 8 Musterlösung

Objektorientierte Programmierung

(b.) Welche Möglichkeit gibt es, die Methode run so zu verändern, dass Bora Bora IMMER zuletzt ausgegeben wird?

Nebenläufigkeit mit Java

Thread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java

OOP: Nebenläufigkeiten Threads. Dipl.-Inform. Arnold Willemer

Nebenläufige Programmierung I

Programmierung mit Threads in Java

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Prozesszustände (1a)

Java I Vorlesung Nebenläufigkeit

Parallele Prozesse Prozeß Parallele Prozesse verzahnte Prozesse Nebenläufige Prozesse: Threads Vorlesung Software-Entwicklung / Folie 131 Ziele:

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

Testen nebenläufiger Objekte

Verteilte Systeme CS5001

Programmieren II. Nebenläufigkeit. Vorlesung 9. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester Threads. Kritische Bereiche

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München

Info B VL 16: Monitore und Semaphoren

5. Threads, Serverprozesse und Benachrichtigungen

Beteiligte Typen (Auszug)

import java.applet.applet; import java.awt.*; public class Grow extends Applet { public void start() { setbackground(color.orange); } public void

Einführung in die Programmierung mit Java

Wirtschaftsinformatik II Sommersemester Lo sungshinweise zu den Ü bungen P. Mandl, M. Dolag, B. Rottmüller, et al.

Informatik II. Semesterklausur

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Das Monitorkonzept Brinch-Hansen

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Einführung in die Programmierung Blockkurs Java

Erste Java-Programme (Scopes und Rekursion)

Aufgabenblatt 6 Musterlösung

16. Parallelität: Threads

Übungen zu Middleware Universität Erlangen-Nürnberg Informatik 4, 2007 Z-Java-Exceptions.fm

Nebenläufigkeit mit Java

II.1.1. Erste Schritte - 1 -

Betriebssysteme. Wintersemester Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com

Liste Programmieren Java Überblick

Einführung Verteilte Systeme - Java Threads I -

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Implementieren von Klassen

Threading. Arthur Zaczek. Aug 2015

Objektorientierte Programmierung Studiengang Medieninformatik

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

Einstieg in die Informatik mit Java

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Deadlocks Wait/Notify Reflections JavaBeans. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 33

II.1.1. Erste Schritte - 1 -

Einstieg in die Informatik mit Java

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads

Nebenläufige Programmierung I

FAKULTÄT FÜR INFORMATIK

Laborskript Verteilte Systeme

II.1.1. Erste Schritte - 1 -

Einführung in die Programmierung Blockkurs Java

1.) Zahlensysteme (10 Punkte)

Vorlesung Informatik II

System.out.println("TEXT");

Einführung in die Programmierung mit Java

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Klausur Software-Entwicklung September 00

Allgemeine Hinweise:

Mobile und Verteilte Datenbanken

16. Parallelität: Threads

Java-Programmierung. Remote Method Invocation - RMI

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Vorlesung Programmieren

Programmieren II. Verklemmungen. Vorlesung 10. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester Deadlocks.

Ausnahmen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 27.6.

Musterlösungen zur Klausur Informatik 3

II.1.1. Erste Schritte - 1 -

Übung zu Grundlagen der Betriebssysteme. 10. Übung

Softwaretechnik 1 Übung 5

Informatik B. Vorlesung 8 Synchronisierung von Threads. Dr. Ralf Kunze

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

... Created by Michael Kirsch & Beat Rossmy

1 Klassen anlegen und Objekte erzeugen

Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. NumberFormatException

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Java Spickzettel von Panjutorials.de

Kapitel 9: Klassen und höhere Datentypen. Selektoren

Java Concurrency Utilities

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Universität Potsdam Institut für Informatik Sommersemester Programmierung. Lehrblatt Woche 11

Motivation. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 20: Threads. Inhalt. Ein Beispiel zur Motivation

Verteilte Systeme. 2. Die Client-Server-Beziehung und daraus resultierende Techniken. 2.2 Nebenläufigkeitstechniken in Java

Vererbung in der objektorientieren Programmierung

Algorithmen und Datenstrukturen

Transkript:

Threads parallele Prozesse auf sequenziellen Prozessoren Prozesse und Threads Es gibt zwei unterschiedliche Programme: Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher. Ein Thread ist eine Sequenzfolge von Operationen innerhalb eines Prozesses. Mehrere Threads in einem Prozess teilen sich denselben Adressraum. Parallel Processing kann somit durch mehrere Prozesse oder durch mehrere Threads erreicht werden. Page 1

Parallele Prozesse Thread 3 Thread 2 Thread 1 Zeit Threads laufen nur quasi-parallel! In Wirklichkeit läuft jeder Thread nur für sehr kurze Zeit und gibt dann Kontrolle an den nächsten Thread ab. Thread class Einfaches erzeugen eines Threads: Eigene Klasse von java.lang.thread ableiten. Eigenen Kode in die run() Methode schreiben. Thread mit der start() Methode starten. Page 2

Threads: ein Beispiel public class CharPrinter extends Thread{ char signal; public CharPrinter (char ch) { signal = ch; public void run() { for(int i =0; i<20;i++){ System.out.print(signal); int delay = (int) (Math.random() * 400); try {sleep(delay); catch(exception e){return; class Programm{ public static void main (String[] arg){ CharPrinter thread1 = new CharPrinter('.'); CharPrinter thread2 = new CharPrinter('*'); thread1.start(); thread2.start(); System.out.print('+'); Threads und externe Daten Wenn Threads externe Daten verändern, bedarf dies spezieller Kontrolle! Thread 1 deposit (500); Thread 2 withdraw (100); void deposit (int x){ void withdraw (int x){ balance = balance - x; balance Zugriff auf dieselben Daten durch zwei verschiedene Threads kann Konflikte verursachen. Werden Daten zwischen dem Lesen und dem Schreiben durch einen zweiten Thread verändert, bleibt dies für den Ersten unbemerkt. Page 3

Synchronisation von Threads class Account { int balance = 0; synchronized void deposit (int x){ synchronized void withdraw (int x){ balance = balance - x; Ist eine Methode als synchronized deklariert verhindert Java, dass eine andere synchronized-methode aktiv wird. Synchronized bei langen Methoden synchronized kann in die Methode hineingezogen werden um den relevanten Block zu schüzen. synchronized void mymethod (int x) { void mymethod (int x) { synchronized (this) { Vorteil ist, dass nur der wichtige Teil blockiert wird, ansonsten sind beide Versionen gleichwertig. Nachteil, der Bytecode wird etwas länger. Page 4

wait() und notify() Threads werden im Allgemeinen automatisch verwaltet. Wenn jedoch Thread A genau dann starten soll wenn Thread B abgearbeitet ist, muss B dies A mitteilen. 1. Möglichkeit: B verändert eine Variable deren Zustand als Nachricht dient und A fragt den Zustand dieser Variablen permanent ab. Nachteil: Thread A muss immer im Abfragezyklus bleiben und kann nicht ganz anhalten. 2. Möglichkeit wait() und notify() Methoden der Klasse Objekt verwenden. wait() und notify() (2) Die wait()-methode wird innerhalb einer syncronized Anweisung (Block) verwendet. Sobald die wait()-methode ausgeführt wird, können andere syncronized Anweisungen starten und der Thread wartet bis er benachrichtigt wird. Die notify()-methode wird ebenfalls innerhalb einer syncronized Anweisung aufgerufen. Beim Aufruf benachrichtigt sie einen Thread der wartet. Warten mehrere, dann wird ein zufälliger benachrichtigt. class MyClass { // Tread A public synchronized void waitformessage(){ try { wait(); catch (InterruptedException ex ) { // Tread B public synchronized void sendmessage(){. notify( ); Page 5