Suche
Für das Plus an Schleifen

Java 9 – eine Einführung: JEP 285 – Support für Spin-Wait-Loops

Michael Inden

© Shutterstock.com / Profit_Image

Das kürzlich erschienene Java 9 besteht aus mehr als nur Modulen und dem Projekt Jigsaw. Über 90 sogenannte JEPs (JDK Enhancement Proposals) sind Teil von Version 9 des Java Development Kits. Im zehnten Teil seiner Serie zu Java 9 stellt Michael Inden, Oracle-zertifizierter Java-Entwickler, die mit JDK 9 eingeführte Unterstützung von Spin-Wait-Loops vor, die im JEP 285 zusammengefasst ist.

Die vorliegende Artikelserie zu Java 9 setzt sich aus Texten von Michael Indens Buch „Java 9 – Die Neuerungen“ zusammen, das beim dpunkt.verlag erschienen ist.

PS: Verpassen Sie nicht unsere Infografik zu Project Jigsaw!

Nachdem wir im ersten Teil dieser Blog-Serie diverse kleinere Änderungen in der Syntax der Sprache Java kennengelernt haben, schauten wir uns im zweiten Teil einige relevante Erweiterungen im JDK an, konkreter: im Process-API und den Collection-Factory-Methoden. Im dritten Teil ging es anschließend um die Ergänzungen im Stream-API, im vierten Teil besprachen wir die Erweiterungen in Optional<T>. Im fünften Teil der Artikelserie standen die Erweiterungen der Java-Klasse LocalDate im Fokus, in Teil sechs war die Verarbeitung von Stackframes und der Klasse StackWalker Thema. Im siebten Teil seiner Reihe stellte Michael Inden den Taskbar-Support von Java 9 vor, in Teil acht waren die Erweiterungen des Unicode-Supports an der Reihe. Der neunte Teil der Serie ist der Unterstützung für TIFF-Grafiken gewidmet, Teil zehn dem Support von Spin-Wait-Loops.

JEP 285: Support von Spin-Wait-Loops

Auf Systemebene und sehr hardwarenah wird mitunter Busy-Waiting in Form sogenannter Spin-Wait-Loops genutzt. Das sind Schleifen, die aktiv auf das Eintreten einer Bedingung wie folgt warten:

void waitForEventAndHandleIt()
{
    while (!eventNotificationReceived)
    { /* spinning */ }

    processEvent();
}

Solche Schleifen sollten Sie als Applikationsentwickler vermeiden, weil das aktive Warten viel CPU-Zeit verbraucht. Verschiedene Prozessoren können derartige Schleifen aber geeignet ausführen, sofern man der JVM einen speziellen »Tipp« gibt. Dies wird seit JDK 9 durch die Methode onSpinWait() der Klasse java.lang.Thread möglich. Zwar ist diese Methode leer, aber der Hotspot-Optimierer der JVM erkennt deren Aufruf und kann eine Warte-Operation in die Schleife einfügen, die die CPU-Last senkt. Dazu muss der obige Sourcecode folgendermaßen modifiziert werden:

void waitForEventAndHandleIt()
{
    while (!eventNotificationReceived)
    {
        Thread.onSpinWait();
    }

    processEvent();
}

Java 9 – Die NeuerungenMichael Indens Buch bietet einen fundierten Einstieg in Java 9 sowie einen Überblick über die umfangreichen Neuerungen in der aktuellen Version. Damit eignet sich das Buch für all jene, die ihr Java-Wissen aktualisieren wollen. Dabei helfen eine Vielzahl an Übungen, um die einzelnen Themengebiete zu vertiefen und besser zu verstehen.

Neben Änderungen an der Sprache bilden auch die Erweiterungen in diversen APIs einen Schwerpunkt. Fehlen darf hier natürlich auch nicht ein Kapitel über die fundamentalste Änderung in Java 9: Project Jigsaw. Auch fortgeschrittenere Themen wie Services und die Migration bestehender Applikationen werden besprochen. Da Java 9 auch einige Auswirkungen auf Build Tools und IDEs mit sich bringt, gibt ein Kapitel einen Überblick über den derzeitigen Stand zum Tooling rund um die neue Java-Version.

Weitere Informationenen zum Buch gibt es hier!

Verwandte Themen:

Geschrieben von
Michael Inden
Michael Inden
Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler für JDK 6. Nach seinem Studium in Oldenburg war er lange Zeit als Softwareentwickler und -architekt bei verschiedenen internationalen Firmen tätig und arbeitet derzeit als Teamleiter Softwareentwicklung in Zürich. Michael Inden hat rund 20 Jahre Erfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und an mehreren Java-One-Konferenzen in San Francisco teilgenommen. Sein Wissen gibt er gerne als Trainer in Schulungen und auf Konferenzen weiter. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen mit ergonomischen, grafischen Oberflächen sowie dem Coaching von Kollegen.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.