Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Scala Grundkurs

Execution Context

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Der Execution Context erlaubt es, in Scala Operationen in Futures mithilfe eines Threadpools im Hintergrund abzubilden. Lassen Sie sich in diesem Video erklären, was genau ein Execution Context ist und wie dieser eingesetzt wird.

Transkript

Der Execution Context dient als Basis für das Ausführen von Futures in Scala. Üblicherweise gibt es einen globalen Execution Context. Dieser basiert auf einem Thread-Pool, der genau so viele Threads hat, wie der Computer CPUs. Also beispielsweise bei einem 8-Kern System 8 Threads. Allerdings konkurrieren alle Futures innerhalb der Applikation, um den gleichen Execution Context und damit dem gleichen Thread-Pool. Wenn man aus bestimmten Gründen für Teile der Anwendung einen eigenen Thread-Pool initialisieren möchte, so kann man diesen auch innerhalb eines eigenen Execution Contexts abbilden. Und ich zeige Ihnen nun, wie genau Sie so einen Execution Context, samt Thread-Pool, erzeugen können. Ich beginne dafür zunächst einmal in meiner Anwendung, die aktuell einen Aufruf einer PaymentAPI startet. In dem Fall erzeugt der Aufruf von charge2, also ein Future. Im Moment wird dieses Future auf dem globalen Execution Context gescheduled. Wenn ich nun aber möchte, dass es einen eigenen Thread-Pool gibt, für genau diese PaymentAPI, müsste ich nun einen eigenen Execution Context erzeugen. Zunächst einmal benötige ich dafür einen eigenen Thread-Pool. Einen Thread-Pool erzeugt man mit der regulären Mechanismen, die man aus Java kennt. Dafür verwende ich also die Klasse Executors und dort den Aufruf: "New fixed Thread-Pool" und dann eine Anzahl an Threads, beispielsweise vier. Als nächstes muss ich nun einen eigenen Execution Context erzeugen. Das ist relativ einfach. Denn dafür gibt es den Aufruf vom Executor und ein solcher Executor ist nun mein Thread-Pool. In diesem Fall habe ich es also geschafft einen eigenen Execution Context für die PaymentAPI zu erstellen. Durch die implizierte Übergabe wird der also automatisch verwendet. Ich kann also nun meine PaymentAPI starten. Und ganz normal, wie gewohnt, liefert sie ein Ergebnis. Allerdings habe ich an der Stelle noch ein Problem, schließlich habe ich einen Thread-Pool erzeugt. Und dieser Thread-Pool beinhaltet nun Threads, die nicht automatisch terminieren. Erkennbar dadurch, dass obwohl das Ende der Anwendung stattgefunden haben sollte, die Anwendung noch nicht terminiert ist. Um das möglich zu machen, trage ich nun selbst dafür Sorge, dass der Thread-Pool bei Beenden der Anwendung heruntergefahren wird. In dem Fall also mit Thread-Pool Punkt, Shutdown. Alternativ könnte ich auch einen Exit-Händler auf dem Systemobjekt von Scala implementieren. Eine weitere Sache, die ich mit dem Execution Context standardmäßig tun kann, ist, das Importieren des globalen Contexts. Aktuell definiere ich explizit den Execution Context durch "ExecutionContext.global". Allerdings kann ich alternativ auch einen Import starten des Execution Contexts und dort der Implicit und nun kann ich mir eine solche eigene Implicit-Konstante ersparen. Im Zusammenhang mit einem Execution Context, sollten Sie nun also verstanden haben, dass es sich dabei lediglich um eine Wrapper-Klasse, um einen klassischen Java Thread-Pool handelt. Üblicherweise wird dann ein Future über Implicit übergeben. Und genau über diese Implicits kann ich auch steuern, dass ich zum Beispiel einen eigenen Execution Context verwende. Des weiteren bin ich auf den globalen Execution Context eingegangen. Dieser hat standardmäßig die gleiche Anzahl an Threads, wie der Computer eine Anzahl an Cores hat. Für die meisten Fälle reicht genau dieser Execution Context. Denn letztendlich stellt der Computer nicht mehr Ressourcen bereit als er CPUs hat. Das heißt, ein eigener Context sollte nur bei besonderen Anforderung, in Betracht gezogen werden. Denn das einzige Resultat davon wäre, dass der eigens erzeugte Context sich mit dem globalen Context um CPU-Zeit streitet.

Scala Grundkurs

Entdecken Sie die Möglichkeiten und Eigenschaften der modernen Programmiersprache Scala.

4 Std. 44 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:12.04.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!