uio--WebPageMain-Module

JAVA-B4 Parallel Computing (Parallelism) Parallelism Multithreading

Klassische Threads Threads & Runnables Overview Thread (Begriff) DruckThread DruckRunnable ThreadDemo Output Thread Lifecycle Overview start() run() join() stop()? StartRunJoinDemo Example Von allein endende Threads Threads mit while(criteria) Daemon-Threads Overview ThreadDaemonDemo Daemon (Summary) Thread-Priority Overview t.setPriority(..) MachineThread Klasse (Example) ThreadPriorityDemo (Example) Thread Notification Grundlagen wait notify notifyAll sleep sleep vs. wait Thread Notification Demo sychronized(monitor) Notification/Monitor Zusammenfassung

Concurrent API Vom Thread zur Concurrent API Was ist Concurrency? Was ist Concurrency? Problemstellungen bei herkömmlichen Threads Features der Concurrent API Warum: Bedeutung des Umstiegs Themenüberblick Technischer Hintergrund Thread.sleep(0, 500_000) System.nanoTime()

Executors (Übersicht) #310 ExecutorService (Page) Begriffsbestimmung Excetutor .execute() ExecutorService (Begriff) ExecutorService Interface Methoden Mehrere Callables und Runnables auf einmal starten Kontrolliertes Beenden Executors-Utilily Klasse newCachedThreadPool() newSingleThreadExecutor() newFixedThreadPool(int nThreads) newWorkStealingPool() newScheduledThreadPool(int corePoolSize) Beispiel ForkJoinPool, RecursiveTask, Executors Example#09 A | B1,B2,B3 | C mit Summenbildung. Executor vs. ExecutorService Example#10 Executors.newFixedThreadPool(2) Beispiel Zusammenfassung Executors

Callable, Future #330 Callable Future (Begriff) Callable Interface (Begriff) Begriff Callable erzeugen Callable verwenden Future Beispiel

Future-Listen mit invokeAll Was sind Future-Listen? Wie erzeuge ich Future-Listen? Wann blockt eine Future-Liste? Beispiel mit 12 Callables in 4 Gruppen

Executors (#350) @! Bis auf Hinweis doppelt Overview Executor (Begriff) ExecutorService (Begriff) Executors.new~ Factory Methoden Executors für ThreadPoolExecutor mit fixed Pool

ScheduledExecutorService ScheduledExecutorService Superklasse ExecutorService schedule(*) scheduleAtFixedRate(*) scheduleWithFixedDelay(*) ScheduledExecutorService (xmpl) ProductClock(Main, Bsp.) AbstractMachine** AbstractMaterial** Coal/Iron/Steel** Coal-/Iron-/Steel-Machine** Material** ProductionBus-Machine** Storage T**
ThreadPoolExecutor (Detail) Executor Implementierung ThreadPoolExecutor (Term) ThreadPoolExecutor Beispiele "FixedSizeExecutorExample" EXAMPLE C20 "CachedExecutorExample" EXAMPLE C21 SynchronousQueue "ScheduledExecutorExample" EXAMPLE C22 "CustomSingleThreadExecutorRunnableComponent" EXAMPLE C23 "CustomPolicyRejectedExecutorExample" EXAMPLE C24 "PrioritizedCombinerRunnableComponent" EXAMPLE C30 "BufferingRejectedTasksExample" EXAMPLE C31 Java RejectedExecutionHandler ThreadPoolExecutor FAQ

Synchronizer Synchronizer (overview) Synchronizer Begriff CountDownLatch CountDownLatch Example CyclicBarrier CyclicBarrier Example (@Zeit ausgeben!) Phaser Phaser Example(@Erl!) Exchanger Exchanger ping/pong Semaphore CompletableFuture async!!! SemaphoreCompletableFutureDemo (@!?)

Monitoring JMX ThreadPoolExecutor "live" überwachen getActiveCount() getPoolSize() getCompletedTaskCount() getQueue().size()

Concurrency Example:DeterministicCopy @todo FILE LINK FEHLT! Example:NonDeterministicCopy @todo FILE LINK FEHLT!

Kapitel java.util.concurrent.Flow @!fehltReactive Flow @!fehltPublisher TSubscriber TSubscription TProcressor TProcressor T

Overview

Concurrency Intro | Overview

Die Java Concurrency API erweitert maßgeblich das Erstellen, Verwalten und das Monitoring von Threads. Die Verwaltung über Executors, Tasks, Pools, Scheduler und mehr macht vieles einfacher. Die Voraussetzung besteht allerdings darin, dass man zuerst einmal versteht, welchen Typ an parallelen Architekturen man mit welchem Ansatz realisieren kann.

Bevor wir uns im Detail mit den jeweiligen Features befassen geben wir zu Beginn einen Einblick und Überblick, warum, wo und ab wann man diese Techniken einsetzen und herkömmliche Verfahren mit klassischen Threads überarbeiten sollte. Unsere Intro für den Sprung von Threads zu Concurrency API.

«Was ist Concurrency»

Concurrency | Was ist ...

Was istConcurrency?

Concurrency beschreibt die Fähigkeit eines Programms, mehrere Aufgaben zeitlich versetzt oder gleichzeitig zu bearbeiten.

Was es bisher??

In der Java-Welt war Multithreading und Parallel-Computing lange Zeit eng mit der Thread-Klasse verknüpft.

Entwickler mussten jeden Thread manuell erzeugen, starten und kontrollieren. Bei wachsender Komplexität wurde jedoch deutlich, dass es strukturiertere Ansätze braucht.

Abstraktion von Thredas, Executor-Modelle, Callables mit Rückgabe und mehr.

Die java.util.concurrent API bietet seit Java 5 eine moderne Lösung für nebenläufige Programmierung:

Sie abstrahiert Threads.

Sie bietet Executor-Modelle.

Es werden Callables mit Rückgabe unterstützt.

Man hat mit Future, Synchronisierer und Locks eine robustere Grundlage für skalierbare Systeme geschaffen.

Bedeutung des Umstiegs

Concurrency | Bedeutung des Umstiegs

Warum ist der Umstieg auf java.util.concurrent so wichtig?

Klassisches Thread-Management ist fehleranfällig:

unkontrollierter Start, keine Poolverwaltung, schwierige Fehlerbehandlung. :

Die Concurrent-API stellt sicher

  • Automatisierte Thread-Pools durch ExecutorService

  • Sauberere Trennung zwischen Aufgaben und Ausführung

  • Asynchrone Kommunikation mit Future und Callable

  • Zuverlässige Synchronisation durch CountDownLatch, Semaphore und mehr

  • Monitoring und Skalierung mit ThreadPoolExecutor und JMX

Themen dieses Kapitels

Concurrency | Themen dieses Kapitels

Themen dieses Kapitels

In diesem Bereich von JAVA-B4 behandeln wir die folgenden Themen und Begriffe:

  • Executor und ExecutorService

  • Callable, Future und Rückgabewerte

  • ThreadPoolExecutor mit Queues und Prioritäten

  • ScheduledExecutorService als Taktgeber

  • Synchronisierer: CountDownLatch, CyclicBarrier, Phaser

  • Concurrent Collections wie ConcurrentHashMap

  • Atomare Variablen: AtomicInteger, LongAdder

UI ORGANIZED.

UIO3 Es ist einfacher als Du denkst.

Stelle noch heute Deine Anfrage.

uio--WebPageFooter-Module