Zugriffspfad / Path

  1. Home
  2. Fachbereiche
  3. Informatik
  4. Personen
  5. Rainer Oechs...
  6. Buch "Parall...
  7. Fehler und Korrekturen zum Buch "Parallele und verteilte Anwendungen in Java" (3. Auflage)

Hauptnavigation / Main Navigation

Fehler und Korrekturen zum Buch "Parallele und verteilte Anwendungen in Java" (3. Auflage)

  • S. 138, vor der fragmentarischen Darstellung der Klasse ThreadPoolExecutor:
    wobei wir uns auf die Beschreibung des einfachsten mit vier Parametern beschränken wollen
    Korrektur:
    wobei wir uns auf die Beschreibung des einfachsten mit fünf Parametern beschränken wollen
    (Andreas Bredtmann, 7. Mai 2013)
  • S. 164, Abschnitt 3.9.3, zweitletzte Zeile im ersten Absatz:
    wenn alle Theads ihren Maximalbedarf
    Korrektur:
    wenn alle Threads ihren Maximalbedarf
    (Andreas Bredtmann, 7. Mai 2013)
  • S. 169, Listing 3.28:
    public synchronized void release(int thread, int anzahl)
    {
        state.free(thread, anzahl);
        notifyAll();
    }
    Korrektur:
    notifyAll ist unnötig und kann gestrichen werden; anzahl sollte besser wie alle anderen Bezeichner durch das englische number ersetzt werden:
    public synchronized void release(int thread, int number)
    {
        state.free(thread, number);
    }
    (Jan Dostert, 13. Februar 2012)
  • S. 183, 3. Zeile:
    Der Aufruf von setSize sollte zum Schluss erfolgen.
    Korrektur:

    Der Aufruf von setVisible sollte zum Schluss erfolgen.
    (Jan Dostert, 15. Februar 2012)
  • S. 192, Listing 4.8:
    public static void main(String[] args)
    {
        new MixedLayoutExample(args);
    }
    Korrektur:
    public static void main(String[] args)
    {
        new MixedLayoutExample();
    }
    (Sven Lakeberg, 11. Mai 2013)
  • S. 217, Listing 4.18:
    else if(milliSecs < 100)
    {
        prefix = "00";
    }
    Korrektur:
    else if(milliSecs < 100)
    {
        prefix = "0";
    }
    (Rainer Oechsle, 10. Januar 2011)
  • S. 247/248, Absatz nach Listing 5.4:
    Die Erläuterungen zu der Klasse UDPMulticastSocket in Bezug auf UDPSocket beziehen sich auf eine ältere Version von UDPSocket, die nicht mehr im Buch zu finden ist. Sie passen somit nicht mehr. Der ganze Absatz sollte deshalb durch folgenden Absatz ersetzt werden.
    Korrektur:
    Der Konstruktor der Klasse UDPMulticastSocket verwendet den Protected-Konstruktor der Basisklasse UDPSocket, der einen DatagramSocket als Parameter hat. Da MulticastSocket aus DatagramSocket abgeleitet ist, kann diesem Konstruktor der Klasse UDPSocket auch ein MulticastSocket-Objekt als Parameter übergeben werden. Dadurch wird dem Attribut der Klasse UDPSocket, das vom Typ DatagramSocket ist, eine Referenz auf ein MulticastSocket-Objekt zugewiesen. Dieses Attribut wird in den Methoden join und leave verwendet. Dies ist möglich, da das DatagramSocket-Attribut vorsorglich mit Protected-Sichtbarkeit ausgestattet wurde. Allerdings muss es auf MulticastSocket gecastet werden, damit die Methoden joinGroup und leaveGroup darauf anwendbar sind.
    (Frank Thesen, 1. Juni 2013)
  • S. 310, Listing 6.26:
    System.out.println("Ende durch Einagbe 'Ende' "
                               + "oder 'ende'");
    Korrektur:
    System.out.println("Ende durch Eingabe 'Ende' "
                               + "oder 'ende'");
    (Jan Dostert, 13. Februar 2012)
  • S. 327, erste Zeile:
    Zäherobjekt
    Korrektur:
    Zählerobjekt
    (Mario Willems, 19. Juli 2011)
  • S. 344, HTML-Quelltext oben auf der Seite:
    </p> am Ende der zweiten Zeile des Quelltexts
    Korrektur: verschieben an das Ende der dritten Zeile des Quelltexts
    (Svenja Mayer, 14. Juli 2013)
  • S. 349, Kommandozeile in Courier:
    java -classpath ...
    Korrektur:
    javac -classpath ...
    (Jan Dostert, 7. Dezember 2011)
  • S. 350, Abbildung 7.3, S. 351, Abbildung 7.4. und S. 352 Text bezüglich der Annotation @WebServlet:
    Die Abbildungen zeigen Screenshots von der Version 6 des Tomcat-Servers, die Annotationen funktionieren aber erst ab Version 7 des Tomcat-Servers.
    Korrektur: Abbildungen auf Version 7 anpassen oder im Text darauf hinweisen, dass die Annotationen zur Konfiguration von Servlets erst ab Tomcat-Version 7 möglich sind.
    (Patrick Fries, 22. Januar 2013)
  • S. 352, etwa in der Mitte der Seite:
    <url-mapping>
    Korrektur: <url-pattern>
    (Svenja Mayer, 14. Juli 2013)
  • S. 363, etwa in der Mitte der Seite zwischen <servlet> und </servlet>:
    <load-on-startup/>
    Ein leeres Tag <load-on-startup/> wird in neueren Tomcat-Versionen nicht mehr akzeptiert. Statt dessen muss eine Zahl angegeben werden. Hat man mehrere Tags der Form load-on-startup, so legt die betreffende Zahl die Reihenfolge fest, in der die Servlets initialisiert werden. Da im Beispiel nur ein einziges Tag load-on-startup vorhanden ist, ist die Zahl hier vollkommen beliebig.
    Korrektur z.B.:
    <load-on-startup>1</load-on-startup>
    (Peter Dieckmann, 6. Januar 2011)
  • S. 368, innerhalb von Listing 7.9, ab der 2. Zeile:
    Counter counter = (Counter)session.getAttribute("Counter");
    if(counter == null)
    {
        counter = new Counter();
        session.setAttribute("Counter", counter);
    }
    Korrektur:
    Counter counter;
    synchronized(session)
    {
        counter = (Counter)session.getAttribute("Counter");
        if(counter == null)
        {
            counter = new Counter();
            session.setAttribute("Counter", counter);
        }
    }
    (Jan Dostert, 7. Dezember 2011)
  • S. 382, Listing 7.16:
    Die vom Servlet erzeugte HTML-Seite verwendet das Tag <xmp>. Dieses Tag gibt es seit HTML 4 nicht mehr.
    Korrektur:
    <xmp> bzw. </xmp> durch <pre> bzw. </pre> ersetzen. Übrigens steht die Bezeichnung pre für preformatted (vorformatiert).
    (Klaus-Günter Albrecht, 31. Juli 2011)
  • S. 389, Teil scope="session":
    Counter counter = (Counter)session.getAttribute("counter");
    if(counter == null)
    {
        counter = new Counter();
        session.setAttribute("counter", counter);
    }
    Korrektur:
    Counter counter;
    synchronized(session)
    {
        counter = (Counter)session.getAttribute("counter");
        if(counter == null)
        {
            counter = new Counter();
            session.setAttribute("counter", counter);
        }
    }
    (Jan Dostert, 7. Dezember 2011)
  • S. 389, Teil scope="application":
    Counter counter = (Counter)application.getAttribute("counter");
    if(counter == null)
    {
        counter = new Counter();
        application.setAttribute("counter", counter);
    }
    Korrektur:
    Counter counter;
    synchronized(application)
    {
        counter = (Counter)application.getAttribute("counter");
        if(counter == null)
        {
            counter = new Counter();
            application.setAttribute("counter", counter);
        }
    }
    (Jan Dostert, 7. Dezember 2011)
  • S. 393/394, Listing 7.19:
    Counter sessionCounter = (Counter)session.getAttribute("sessionCounter");
    if(sessionCounter == null)
    {
        sessionCounter = new Counter();
        session.setAttribute("sessionCounter", sessionCounter);
    }
    ...
    Counter applicationCounter = (Counter)application.getAttribute("applicationCounter");
    if(applicationCounter == null)
    {
        applicationCounter = new Counter();
        application.setAttribute("applicationCounter", applicationCounter);
    }
    Korrektur:
    Counter sessionCounter;
    synchronized(session)
    {
        sessionCounter = (Counter)session.getAttribute("sessionCounter");
        if(sessionCounter == null)
        {
            sessionCounter = new Counter();
            session.setAttribute("sessionCounter", sessionCounter);
        }
    }
    ...
    Counter applicationCounter;
    synchronized(application)
    {
        applicationCounter = (Counter)application.getAttribute("applicationCounter");
        if(applicationCounter == null)
        {
            applicationCounter = new Counter();
            application.setAttribute("applicationCounter", applicationCounter);
        }
    }
    (Rainer Oechsle, 8. Dezember 2011)
  • S. 404, in Methode getIfDifferent:
    wait(MAX_TIME);
    Korrektur:
    wait(startTime + MAX_TIME - System.currentTimeMillis());
    Damit wird bei mehrmaligem Durchlaufen der Schleife nur noch die Restzeit gewartet.
    (Rainer Oechsle, 11. November 2011)
Rainer Oechsle,  1. April 2015