Thread- und Netzwerk-
Programmierung mit
Java
Ein Praktikum für die
Parallele Programmierung
Heinz Kredel, Akitoshi Yoshida
Liebe LeserInnen und Leser,
obwohl wir sicher waren, daß keine Fehler mehr enthalten waren, als wir das Buch in Druck gaben, mussten wir doch einsehen, dass dem nicht so ist ;-) Wir haben daher in dieser Web-Seite begonnen die uns bekannten Fehler samt Korrekturen zu sammeln. Falls Sie weitere Fehler gefunden haben, wären wir Ihnen sehr Dankbar, wenn Sie uns diese mitteilen würden (Email:kredel@rz.uni-mannheim.de
). Neben den korrigierten Druckfehlern wollen wir an dieser Stelle auch Versionen der Beispielprogramme ablegen, die unter der neuesten Java Version funktionieren. Gerade im Bereich von RMI und Sicherheit haben sich mit Java 2.0 (JDK 1.2) einige Änderungen ergeben, die bewirken, dass die betroffenen Programme auf CD-ROM damit nicht lauffähig sind.Vielen Dank für Ihre Unterstützung
Heinz Kredel und Akitoshi Yoshida
Korrekturen von Druckfehlern
- Seite 23, 15. Zeile von unten:
- statt "nach der Ausführung 0, 1, oder 3 sein!" muß es heißen "nach der Ausführung 0, 1, 2 oder 3 sein!"
Denn: zunächst könnte x=0 in ein Register geladen werden, dann könnte das Verbundstatement ausgeführt werden, und dann könnte y=2 in ein Register geladen werden; wenn dann die Addition ausgeführt wird ergibt sich der Wert von z als 2.- Seite 50, 10. Zeile von oben:
- statt "Synchronisiert wird anhand des Objekts atom" muß es heißen "Synchronisiert wird mit Hilfe der synchronized Deklaration von
act1()
undact2()
".- Seite 62, 3. Zeile von unten:
- hinter "Implementierungsskizze:" ist folgender Satz einzufügen: "An dem Objekt mux wird synchronisiert und das Objekt pos wird zum Warten und Signalisieren verwendet."
- Seite 114, 14. Zeile von unten:
- statt "der Methode
getSocket()
" muß es heißen "der Methodeaccept()
und dem KonstruktorSocket()
".Korrekturen und Bemerkungen
Es wird immer wieder nach der fehlerhaften JVM von Seite 64 unten gefragt. Auch wenn dies mittlerweile sichter keine Bedeutung mehr hat, hier doch die Antwort: es handelte sich um eine spätere Version des JDK 1.0.8 (soviel wir uns erinnern) auf dem Betriebssystem OS/2 Warp.
Auf Seite 65 im ersten Absatz bei der Begründung, dass unsere Semaphoren Implementierung nur weak fair ist, sollte der folgende Punkt deutlicher herauskommen: Zwischen dem Eintreffen des signal (in wait) und dem wiedererlangen des synchronisations-Locks (wegen synchronized void P()) könnten andere Threads den synchronisations-Lock erhalten und damit s wieder modifizieren. Aus genau diesem Grund steht dort auch ein "while (s <= 0)" und nicht nur ein "if (s <= 0)". Damit könnte aber für einen bestimmten Thread die Bedingung "s > 0" zu selten wahr werden, d.h. die Implementierung ist nur weak fair.
Auf Seite 65 im ersten Absatz steht "Um die Implementierung strong fair zu machen, müssten wir anstelle der Zählvariablen del eine Queue verwenden." Dieser Satz ist nicht wörtlich gemeint, sondern als Anhaltspunkt für die Suche nach einer strong fair Lösung gedacht.
Auf der CD-ROM fehlt die Datei
gran.java
und weitere Dateien mit zugehörigen Hilfsklassen. Download als tar-gzip. Eine verbesserte Version wird demnächst hier erscheinen.Auf der CD-ROM fehlt ebenfalls die Datei
gran.c
und Dateien mit zugehörigen Hilfsklassen. Download als tar-gzip.
Neue Versionen der Beispielprogramme
Für das Producer-Consumer Problem mit TCP/IP gibt es jetzt eine Version, die Sie auch als Applets starten können. Download als tar-gzip.
Wenn Sie das Beispiel auf Ihrem Rechner testen wollen, laden Sie zunächst ExCons, dann können Sie ExProd laden. Die Reihenfolge beim anklicken der Start-Buttons der Applets ist dann beliebig.
Das Entladen der Applets macht bei einigen Browsern noch noch Probleme, da die Sockets nicht korrekt freigegeben werden; wir sind aber dabei dies zu verbessern.Da die RMI Beispielprogramme unter Java 2.0 (JDK 1.2) wegen der neuen Sicherheitsfunktionen nicht mehr funktionieren, werden wir hier angepasste Versionen zur Verfügung stellen.
Nützliche Links
- W3 Consortium
- JavaSoft
- Java Grande Forum
- JavaGrande99 (June 12-14, 1999), Palo Alto
- JavaOne sun, javasoft (June 15-17,1999), San Francisco
- Blackdown: Java + Linux
- JIT 99 Java Informations Tage, 20.-21.9. 1999, Düsseldorf
JIT 98 Java Informations Tage, Nov. 1998, Frankfurt- Ninja Numerically Intensive Java
Verlage und Buchhandlungen
- dpunkt Verlag
- Buchseite bei dpunkt
- Lehmanns Buchhandlung
- amazon.de Buchhandlung
- Buchseite bei amazon.de
- bol.de Buchhandlung
© Kredel & Yoshida, dpunkt 1998, 1999 Last modified: Wed Dec 13 09:11:07 CET 2000