Java von Kopf bis Fuß

Eine abwechslungsreiche Entdeckungsreise durch die objektorientierte Programmierung

Kathy Sierra, Bert Bates und Trisha Gee

Diese Publikation zitieren

Kathy Sierra, Bert Bates, Trisha Gee, Java von Kopf bis Fuß (2023), O'Reilly Verlag, Heidelberg, ISBN: 9783960107484

5514
Accesses
30
Quotes

Beschreibung / Abstract


Java lernen - gehirnfreundlich und mit Spaß!



  • Der Bestseller in Neuauflage, rundum überarbeitet und aktualisiert

  • Eine komplette Einführung in die objektorientierte Programmierung

  • Vermittelt moderne Ansätze für ein schlankeres, schnelleres und einfacher zu wartendes Java von heute

  • Mit einzigartiger Von-Kopf-bis-Fuß-Didaktik: Ein besonderes Lernerlebnis durch die spielerische, visuell anregende Vermittlung von Wissen



Java von Kopf bis Fuß - jetzt vollständig überarbeitet und aktualisiert - ist eine umfassende Erlebnistour durch die objektorientierte Programmierung und Java. Ganz nach modernen Lernprinzipien entworfen, führt Sie dieses Buch von den Grundlagen der Sprache zu fortgeschrittenen Themen wie Lambdas, Streams, Threads, Generics, Threading oder Networking. Und das Beste ist: Sie werden dabei lernen, wirklich wie erfahrene Entwickler:innen zu denken.
Auf Ihrem Weg dorthin werden Sie nicht nur lesen. Sie knacken Rätsel, spielen, lösen Krimis und kommen mit Java auf eine Weise zusammen, die Sie sich nicht hätten träumen lassen. Aber natürlich werden Sie auch Unmengen echten Java-Code schreiben.
Mithilfe zahlreicher Übungen, Puzzle, Interviews und Abbildungen lädt dieses Buch Ihnen das Wissen direkt ins Hirn. Wenn Sie sich gerne langweilen, besorgen Sie sich lieber ein anderes Buch. Aber wenn Sie wirklich Java lernen wollen, ist alles andere kalter Kaffee.

Beschreibung

Kathy Sierra interessiert sich für Lerntheorie seit ihrer Zeit als Spieleentwicklerin für Virgin, MGM und Amblin' und als Dozentin für New Media Authoring an der UCLA. Sie war Master-Java-Trainerin für Sun Microsystems, und sie gründete JavaRanch.com (jetzt CodeRanch.com), das in den Jahren 2003 und 2004 den Jolt Cola Productivity Award gewann. Im Jahr 2015 erhielt sie den Electronic Frontier Foundation's Pioneer Award für ihre Arbeit zur Schaffung kompetenter Nutzer und den Aufbau nachhaltiger Gemeinschaften. 
In jüngster Zeit konzentriert sich Kathy auf modernste Bewegungswissenschaften und das Coaching zum Erwerb von Fähigkeiten, bekannt als Ecological Dynamics oder »Eco-D«. Ihre Arbeit, bei der sie Eco-D für das Training von Pferden einsetzt, führt zu einem weitaus humaneren Ansatz in der Reitkunst, was die einen erfreut (und die anderen, traurigerweise, verwirrt). Die Pferde, die das Glück haben, dass ihre Besitzer Kathys Ansatz anwenden, sind zufriedener, autonomer, gesünder und sportlicher als ihre traditionell trainierten Artgenossen.
Bevor Bert Bates Autor wurde, war er Entwickler, spezialisiert auf KI der alten Schule (hauptsächlich Expertensysteme), Echtzeit-Betriebssysteme und komplexe Planungssysteme. Im Jahr 2003 schrieben Bert und Kathy "Head First Java" und starteten die Head-First-Reihe. Seitdem hat er weitere Java-Bücher geschrieben und Sun Microsystems und Oracle bei vielen ihrer Java-Zertifizierungen beraten. Außerdem hat er Hunderte von Autor:innen und Lektor:innen darin geschult, Bücher zu schreiben, die gute Lerninhalte bieten.
Bert ist Go-Spieler und hat 2016 mit Entsetzen und Faszination zugesehen, wie AlphaGo Lee Sedol besiegt hat. In letzter Zeit nutzt er Eco-D (Ecological Dynamics), um sein Golfspiel zu verbessern und seinen Papagei Bokeh zu trainieren. - Bert hat das Privileg, Trisha Gee seit mehr als acht Jahren zu kennen, und die Head-First-Reihe hat das große Glück, sie zu den Auto:innen zu zählen.
Trisha Gee arbeitet seit 1997 mit Java, als ihre Universität zukunftsorientiert genug war, diese "strahlend neue" Sprache für den Informatikunterricht einzuführen. Seitdem hat sie als Entwicklerin und Consultant Java-Anwendungen für eine Reihe von Branchen entwickelt, darunter das Bankwesen, die Fertigung und gemeinnützige Organisationen.
Trisha möchte all das weitergeben, was sie in diesen Jahren als Entwicklerin auf die harte Tour gelernt hat. Deshalb wurde sie Developer Advocate, schreibt Blogbeiträge, spricht auf Konferenzen und erstellt Videos, um ihr Wissen weiterzugeben. Sie verbrachte fünf Jahre als Java Developer Advocate bei JetBrains und weitere zwei Jahre als Leiterin des Teams "JetBrains Java Advocacy". Während dieser Zeit hat sie viel über die Probleme gelernt, mit denen Java-Entwickler konfrontiert sind.
Trisha hat in den letzten acht Jahren immer wieder mit Bert über die Aktualisierung von Head First Java gesprochen! Sie erinnert sich gerne an die wöchentlichen Telefongespräche mit Bert; der regelmäßige Kontakt mit einem sachkundigen und warmherzigen Menschen wie Bert half ihr, bei gesundem Verstand zu bleiben. Der Ansatz von Bert und Kathy, das Lernen zu fördern, ist der Kern dessen, was sie seit fast zehn Jahren zu tun versucht.

Inhaltsverzeichnis

  • BEGINN
  • Die Autorin und der Autor von Java von Kopf bis Fußund die Schöpfer der Head-First-Buchreihe
  • Co-Autorin von Java von Kopf bis Fuß, dritte englische Auflage
  • Über den Übersetzer dieses Buchs
  • Inhaltsverzeichnis
  • Einführung
  • Für wen ist dieses Buch?
  • Wir wissen, was Sie denken.
  • Metakognition: Nachdenken übers Denken
  • Das haben WIR getan:
  • Und das können SIE tun, um sich Ihr Gehirn untertan zu machen
  • Was Sie für dieses Buch brauchen:
  • Was Sie sonst noch wissen sollten:
  • Die Fachgutachter der dritten englischen Auflage
  • Die Fachgutachter der zweiten englischen Auflage
  • 1 Die Oberfläche durchbrechen
  • Wie Java funktioniert
  • Was Sie in Java tun werden
  • Eine sehr kurze Geschichte von Java
  • Codestruktur in Java
  • Eine Klasse mit einer main()-Methode schreiben
  • Eine ernsthafte Geschäftsanwendung schreiben
  • Bedingte Verzweigungen
  • Einfache boolesche Tests
  • Übung
  • Der Phras-O-Mat
  • 2 Die Reise nach Objectville
  • Stuhlkriege
  • Schnell! Nichts wie raus aus main()!
  • Die Film-Objekte erstellen und testen
  • Ihr erstes Objekt erstellen
  • Das Ratespiel ausführen
  • Übung
  • 3 Verstehen Sie Ihre Variablen
  • Eine Variable deklarieren
  • »Einen doppelten Espresso bitte, ach nein, doch lieber einen int.«
  • Auf keinen Fall etwas verschütten …
  • Finger weg von Schlüsselwörtern!
  • Ein Dog-Objekt kontrollieren
  • Eine Objektreferenz ist einfach ein anderer Variablenwert.
  • Das Leben auf dem Garbage Collectible Heap
  • Ein Array ist wie ein Schrank voller Tassen … ähm Becher
  • Ein Array aus Dog-Objekten erstellen
  • Kontrollieren Sie Ihr Dog-Objekt
  • Ein Dog-Beispiel
  • Übung
  • 4 Wie sich Objekte verhalten
  • Erinnern Sie sich: Eine Klasse beschreibt, was ein Objekt weiß und was es tut.
  • Die Größe beeinflusst das Bellen
  • Sie können einer Methode Informationen schicken
  • Sie können von Methoden etwas zurückbekommen
  • Sie können einer Methode mehr als eine Sache übergeben
  • Coole Dinge, die Sie mit Parametern und Rückgabetypen anstellen können
  • Kapselung
  • Die GoodDog-Klasse kapseln
  • Wie verhalten sich Objekte in einem Array?
  • Instanzvariablen deklarieren und initialisieren
  • Der Unterschied zwischen Instanzvariablen und lokalen Variablen
  • Variablen vergleichen (elementare und Referenztypen)
  • Übung
  • 5 Methoden mit Superkräften
  • Ein Spiel im Schiffe-versenken-Style: »Startups versenken«
  • Zuerst ein abstrakter Entwurf
  • Eine Klasse entwickeln
  • Die Methoden-Implementierungen schreiben
  • Die checkYourself()-Methode
  • Vorcode für die SimpleStartupGame-Klasse
  • Die main()-Methode des Spiels
  • Eine letzte Klasse: GameHelper
  • Dann spielen wir mal …
  • Mehr über for-Schleifen
  • Ein Schleifendurchlauf
  • Die verbesserte for-Schleife
  • Elementare Typen casten
  • Übung
  • 6 Die Java-Bibliothek verwenden
  • Das vorige Kapitel endete mit einem Cliffhanger – nämlich einem Bug.
  • Also, was ist passiert?
  • Wie reparieren wir das?
  • Wachen Sie endlich auf und sehen Sie der Java-API ins Auge
  • ArrayList mit einem regulären Array vergleichen
  • Einige Dinge, die Sie mit ArrayList tun können
  • Den Startup-Code reparieren
  • Neue und verbesserte Startup-Klasse
  • Bauen wir das RICHTIGE Spiel: »Startups versenken«
  • Was muss geändert werden?
  • Wer macht was im StartupBust-Spiel (und wann)
  • Vorcode für die echte StartupBust-Klasse
  • Die finale Version der Startup-Klasse
  • Boolesche Ausdrücke mit Superkräften
  • Die Bibliothek (Java-API) verwenden
  • Wie man die API erforscht
  • Die Klassendokumentation benutzen
  • Übung
  • 7 Besser leben in Objectville
  • Stuhlkriege neu aufgelegt ...
  • Vererbung verstehen
  • Entwerfen wir einen Vererbungsbaum für ein Tiersimulationsprogramm
  • Vererbung nutzen, um duplizierten Code in Unterklassen zu vermeiden
  • Essen alle Tiere auf die gleiche Weise?
  • Weitere Vererbungsmöglichkeiten finden
  • Einen Vererbungsbaum entwerfen
  • IST EIN und HAT EIN verwenden
  • Woher wissen Sie, dass Ihre Vererbungshierarchie korrekt ist?
  • Vererbung kann man gut gebrauchen, man kann sie aber auch missbrauchen!
  • Was also bringt der ganze Vererbungskram Ihnen?
  • Den Vertrag einhalten: Regeln für das Überschreiben
  • Eine Methode überladen
  • Übung
  • 8 Ernsthafte Polymorphie
  • Haben wir etwas vergessen, als wir das hier entworfen haben?
  • Der Compiler verhindert die Instanziierung von abstrakten Klassen
  • Abstrakt vs. konkret
  • Abstrakte Methoden
  • Abstrakte Methoden MÜSSEN implementiert werden
  • Polymorphie in Aktion
  • Oh nein, wir müssen auch Katzen aufnehmen können
  • Was ist mit Nicht-Animals? Warum machen wir die Klasse nicht so allgemein, dass sie mit allem umgehen kann?
  • Und was enthält diese Ultra-Super-Megaklasse Object?
  • Die Verwendung polymorpher Referenzen vom Typ Object hat ihren Preis ...
  • Wenn ein Dog sich nicht wie ein Dog verhält
  • Objekte bellen nicht
  • Finden Sie Ihr inneres Object
  • Was, wenn Sie den Vertrag ändern müssen?
  • Erforschen wir ein paar Entwurfsoptionen für die Wiederverwendung einiger unserer Klassen in einem PetShop-Programm.
  • Die Rettung: Interfaces!
  • Das Pet-Interface erstellen und implementieren
  • Die Superklassenversion einer Methode aufrufen
  • Übung
  • 9 Leben und Sterben eines Objekts
  • Der Stack und der Heap: wo das Leben spielt
  • Methoden werden gestapelt
  • Was ist mit lokalen Variablen, die Objekte sind?
  • Wenn lokale Variablen auf dem Stack leben, wo leben dann Instanzvariablen?
  • Das Wunder der Objekterstellung
  • Ein Duck-Objekt konstruieren
  • Den Zustand einer neuen Duck initialisieren
  • Den Konstruktor benutzen, um wichtigeZustände von Duck zu initialisieren
  • Die Erstellung einer Ente erleichtern
  • Erstellt der Compiler nicht immer einen argumentlosen Konstruktor für Sie?
  • Kurzer Rückblick. Vier Dinge, die Sie sich zu Konstruktoren merken sollten:
  • Die Rolle der Superklassen­konstruktoren im Leben eines Objekts
  • Ein Hippo zu erstellen, heißt auch, die Animal- und Object-Teile zu erstellen ...
  • Wie ruft man einen Superklassenkonstruktor auf?
  • Kann ein Kind vor seinen Eltern existieren?
  • Superklassenkonstruktoren mit Argumenten
  • Einen überladenen Konstruktor auseinem anderen aufrufen
  • Jetzt wissen wir, wie ein Objekt geboren wird. Aber wie lange lebt ein Objekt?
  • Was ist mit Referenzvariablen?
  • Übung
  • 10 Zahlen, bitte!
  • MATH-Methoden: Näher werden Sie einer globalen Methode nie wieder kommen
  • Der Unterschied zwischen regulären (nicht statischen) und statischen Methoden
  • Was es bedeutet, eine Klasse mit statischen Methoden zu haben
  • Statische Methoden können keine nicht statischen (Instanz-)Variablen verwenden
  • Statische Methoden können auch keine nicht statischen Methoden nutzen!
  • Statische Variable: value ist für ALLE Instanzen der Klasse gleich
  • Eine statische Variable initialisieren
  • Statische finale Variablen sind Konstanten
  • final ist nicht nur etwas für statische Variablen ...
  • Math-Methoden
  • Elementartypen verpacken
  • Autoboxing funktioniert fast überall
  • Und umgekehrt ... eine elementare Zahl in einen String verwandeln
  • Zahlenformatierung
  • Formatierung in Einzelteilen ...
  • Der Formatstring verwendet seineeigene kleine Sprachsyntax
  • Der Format-Spezifizierer
  • Zwingend erforderlich ist nur der TYP-Spezifizierer
  • Was passiert, wenn ich mehr als ein Argument habe?
  • Nur noch eine Sache ... statische Importe
  • Übung
  • 11 Datenstrukturen
  • Die Beliebtheit von Songs in Ihrer Jukebox mitverfolgen
  • Ihr erster Job: die Songs alphabetisch sortieren
  • Die java.util-API, List und Collections entdecken
  • In Wirklichkeit gibt es viele Möglichkeiten des Sortierens
  • »Natürliche Reihenfolge«:Was Java als alphabetisch betrachtet
  • Aber jetzt brauchen Sie Song-Objekte und keine einfachen Songs
  • Den Jukebox-Code ändern, sodass er Songs anstelle von Strings verwendet
  • Das wird nicht kompiliert!
  • Wie die sort()-Methode in der API deklariert wird
  • Generics sorgen für mehr Typsicherheit
  • Generics lernen
  • Generische Klassen verwenden
  • Typparameter mit ArrayList verwenden
  • Generische METHODEN verwenden
  • Und jetzt wird es richtig seltsam
  • Erneut ein Blick auf die sort()-Methode
  • Bei Generics steht »extends« für »extends oder implements«
  • Endlich wissen wir, was nicht stimmte ... Die Song-Klasse muss Comparable implementieren
  • Die neue, verbesserte Song-Klasse
  • Wir können die Liste sortieren, aber ...
  • Einen selbst definierten Comparator verwenden
  • Die Jukebox für die Verwendung eines Comparator aktualisieren
  • Moment! Wir sortieren auf zwei verschiedene Arten!
  • Mit Comparators sortieren
  • Nur der wichtige Code
  • Was brauchen wir WIRKLICH, um sortieren zu können?
  • Lambdas auf die Bühne! Nutzen, was der Compiler selbst herausfindet
  • Wo ist nur der ganze Code hin?
  • Manche Interfaces haben nur EINE Methode, die implementiert werden muss
  • Die Jukebox mit Lambdas aktualisieren
  • O-oh! Die Sortierung funktioniert, aber jetzt haben wir welche doppelt ...
  • Wir brauchen keine List(e), sondern ein Set
  • Die Collection-API (zumindest teilweise)
  • Ein HashSet anstelle einer ArrayList verwenden
  • Wann sind zwei Objekte gleich?
  • Wie HashSet auf Duplikate testet: hashCode() und equals()
  • Die Song-Klasse mit überschriebenen hashCode()- und equals()-Methoden
  • Soll das Set sortiert bleiben, benutzen wir TreeSet
  • Was Sie über TreeSet wissen MÜSSEN ...
  • TreeSet-Elemente MÜSSEN vergleichbar sein
  • Nachdem wir Lists und Sets gesehen haben, verwenden wir jetzt eine Map
  • Collections erstellen und füllen
  • Praktische Factory-Methoden für Collections
  • Endlich wieder zurück zu Generics
  • Funktioniert das auch mit einer List<Dog>?
  • Was könnte passieren, wenn das erlaubt wäre ... ?
  • Dies können wir mit Wildcards erledigen
  • Den generischen Typparameter der Methode verwenden
  • Lösung zur Übung
  • 12 Lambdas und Streams:
  • Sagen Sie dem Computer, WAS Sie wollen
  • Wenn for-Schleifen schieflaufen
  • Kleine Fehler in gängigem Code können schwer zu finden sein
  • Bausteine für häufige Aufgaben
  • Einführung in die Streams-API
  • Erste Schritte mit Streams
  • Streams sind wie Rezepte: Nichts passiert, solange sie niemand nachkocht.
  • Ergebnisse von einem Stream erhalten
  • Stream-Operationen sind wie Puzzlesteine
  • Diese Puzzlesteine können gestapelt und kombiniert werden
  • Die Bausteine anpassen
  • Komplexe Pipelines Puzzlestein für Puzzlestein erstellen
  • Abschließende Operationen erledigen die ganze Arbeit
  • Ergebnisse in einer List speichern
  • Richtlinien für die Arbeit mit Streams
  • Hallo Lambda, mein (nicht ganz so) alter Freund
  • Verhalten weitergeben
  • Die Form von Lambda-Ausdrücken
  • Anatomie eines Lambda-Ausdrucks
  • Vielfalt ist die Würze des Lebens
  • Woher weiß ich, ob eine Methode einen Lambda übernimmt?
  • Erkennen Sie funktionale Interfaces
  • Lou ist wieder da!
  • Lous Herausforderung Nr. 1: Finde alle »Rock«-Songs
  • Streams filtern, um bestimmte Elemente zu behalten
  • Let’s Rock!
  • Filter clever nutzen
  • Lous Herausforderung Nr. 2: Alle Genres auflisten
  • Einen Typ auf einen anderen abbilden
  • Duplikate entfernen
  • Eins für jedes Genre
  • Einfach weiterbauen!
  • Manchmal brauchen Sie nicht einmal einen Lambda-Ausdruck
  • Ergebnisse auf unterschiedliche Weise einsammeln
  • Moment! Es geht noch weiter!
  • Optional ist ein Wrapper
  • Vergessen Sie nicht, mit dem Optional-Wrapper zu sprechen
  • Der unerwartete Kaffee
  • 13 Riskantes Verhalten
  • Bauen wir eine Musikmaschine
  • Wir beginnen mit den Grundlagen
  • Zuerst brauchen wir einen Sequencer
  • Was passiert, wenn eine Methode, die Sie aufrufen wollen (vielleicht aus einer nicht selbst geschriebenen Klasse) riskant ist?
  • Eine Exception ist ein Objekt ... des Typs Exception
  • Flusskontrolle in try/catch-Blocks
  • Finally: für die Dinge, die auf jeden Fall ausgeführt werden sollen
  • Exceptions sind polymorph
  • Mehrfache catch-Blöcke müssen von klein nach groß geordnet werden
  • Größere Körbe können nicht oberhalb von kleineren Körben stehen
  • Wenn Sie eine Exception nichtselbst behandeln wollen ...
  • Ausweichen (durch Deklaration) verzögert nur das Unausweichliche
  • Zurück zu unserem Musik-Code
  • Codeküche
  • Richtigen Sound erzeugen
  • Version 1: Ihre allererste Soundplayer-App
  • Ein MidiEvent (Songdaten) erstellen
  • MIDI-Message: das Herz eines MidiEvent
  • Eine Message ändern
  • Version 2: Kommandozeilenargumente für das Experimentieren mit Sounds
  • Übung
  • 14 Innen hui, außen GUI
  • Alles beginnt mit einem Fenster
  • Ihr erstes GUI: ein Button in einem Frame
  • Aber wenn ich den Button anklicke, passiert nichts ...
  • Wie man an ein Benutzer-Event kommt
  • Listener, Quellen und Events
  • Zurück zur Grafik ...
  • Machen Sie sich Ihr eigenes Grafik-Widget
  • Spaß mit paintComponent()
  • Hinter jeder guten Graphics-Referenz steckt ein Graphics2D-Objekt
  • GUI-Layouts: mehrere Widgets in einen Frame packen
  • Die Rettung: Innere Klassen!
  • Eine Instanz einer inneren Klasse erstellen
  • Rettung durch Lambdas!
  • Innere Klassen für Animationen einsetzen
  • Eine einfachere Möglichkeit, Messages und Events zu erstellen
  • Version eins: die neue statische Methode makeEvent() verwenden
  • Version zwei: ControllerEvents registrieren und erhalten
  • Version drei: Grafiken im Takt der Musik
  • 15 Mehr Schwung mit Swing
  • Swing-Komponenten
  • Layoutmanager
  • Wie entscheidet der Layoutmanager?
  • Die drei wichtigsten Layoutmanager: Border, Flow und Box
  • Spielen mit Swing-Komponenten
  • Die BeatBox
  • Übung
  • 16 Objekte (und Text) speichern
  • Den Beat einfangen
  • Zustand speichern
  • Ein serialisiertes Objekt in eine Datei schreiben
  • Daten bewegen sich in Streams von Ort zu Ort
  • Was passiert wirklich mit einem Objekt, wenn es serialisiert wurde?
  • Soll eine Klasse serialisierbar sein, implementieren Sie Serializable
  • Deserialisierung: ein Objekt wiederherstellen
  • Was passiert während der Deserialisierung?
  • Spielfiguren speichern und wiederherstellen
  • Version-ID: Ein großes Serialisierungsproblem
  • Die serialVersionUID verwenden
  • Einen String in ein Textdatei schreiben
  • Textdatei-Beispiel: E-Lernkarten
  • Quiz Card Builder (Code grob skizziert)
  • Die Klasse java.io.File
  • Aus einer Textdatei lesen
  • Quiz Card Player (Code grob skizziert)
  • Parsen mit String.split()
  • NIO.2 und das java.nio.file-Package
  • Path, Paths und Files (mit Verzeichnissen spielen)
  • Endlich, ein genauer Blick auf finally
  • Die Anweisung try-with-resources (TWR)
  • Autocloseable, das sehr kleine catch
  • Ein BeatBox-Pattern speichern
  • Ein BeatBox-Pattern wiederherstellen
  • 17 Eine Verbindung herstellen
  • Echtzeit-BeatBox-Chat
  • Verbinden, senden, empfangen
  • Der DailyAdviceClient (»Tipp des Tages«)
  • Code für den DailyAdviceClient
  • Ein einfaches Serverprogramm schreiben
  • Der Code für den DailyAdviceServer
  • Einen Chatclient schreiben
  • Ein wirklich einfacher Chatserver
  • Java hat mehrere Threads, aber nur eine Thread-Klasse
  • Was bedeutet es, mehrere Aufruf-Stacks zu haben?
  • Wie wir früher neue Threads gestartet haben
  • Eine bessere Alternative: Threads überhaupt nicht verwalten
  • Einen Job ausführen
  • Die drei Zustände eines neuen Threads
  • Der Thread-Scheduler
  • Einen Thread schlafen schicken
  • Unser Programm mit sleep() vorhersagbarer machen
  • Es hat auch Nachteile, wenn wir einen Thread schlafen schicken
  • Rückwärtszählen bis zur Bereitschaft
  • Zwei (oder mehr!) Threads erzeugen und starten
  • Threads im Pool
  • Mehrere Threads ausführen
  • Feierabend am Thread-Pool
  • Übung
  • 18 Nebenläufigkeitsprobleme behandeln
  • Was kann da schon schiefgehen?
  • Das Ryan-und-Monica-Problem, in Code ausgedrückt
  • Das Schloss eines Objekts verwenden
  • Synchronisierte Methoden verwenden
  • Es ist wichtig, das richtige Objekt zu sperren
  • Das gefürchtete »Problem der verlorenen Aktualisierung«
  • Die increment()-Methode atomar machen. Synchronisieren Sie sie!
  • Blockade, eine tödliche Seite der Synchronisierung
  • Es muss nicht immer synchronized sein
  • »Vergleichen und tauschen« mit atomaren Variablen
  • Ryan und Monica werden atomar
  • Eine Klasse für immutable Daten schreiben
  • Immutable Objekte verwenden
  • Immutable Daten verändern
  • Mehr Probleme mit geteilten Daten
  • Das Lesen aus einer sich verändernden Datenstruktur löst eine Exception aus
  • Verwenden Sie eine threadsichere Datenstruktur
  • CopyOnWriteArrayList
  • Übung
  • Anhang A: Die finale Codeküche
  • Das endgültige BeatBox-Server-Programm
  • Das endgültige BeatBox-Serverprogramm
  • Anhang B: Die (mehr als) zehn wichtigsten Themen, die es nicht ins Buch geschafft haben ...
  • #11 JShell (Java REPL)
  • #10 Packages
  • #9 Immutabilität in Strings und Wrappern
  • #8 Zugriffsebenen und Zugriffsmodifier (wer sieht was)
  • #7 Varargs
  • #6 Annotationen
  • #5 Lambdas und Maps
  • #4 Parallele Streams
  • #3 Enumerations (enumerierte Typen/Enums)
  • #2 Lokale Typinferenz für Variablen (var)
  • #1 Records
  • Index

Mehr von dieser Serie

    Ähnliche Titel

      Mehr von diesem Autor