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

Executors | Overview #350

Mit dem Themenbereich der Executors beginnt der Einstieg in die Ausführung einzelner oder auch mehrerer Callables, geordnet, eher zufällig oder auch im Zeittakt. Executors betreffen Executor, ExecutorService, Scheduled~ Varianten sowie zugehörige Implementierungsklassen.

Wir geben einen ersten Gesamtüberblick als Voraussetzung für das Verständnis des Zusammenspiels aus Executor-Interfaces und dem späteren ThreadPoolExecutor.

Executors | Executor Interfaces

Um die ThreadPoolExecutor-Klasse verstehen zu können ist es wichtig, die zugehörigen Interfaces zu verstehen.

Executor Interfaces

Das Executor Interface ist das Basis-Interface. Es bietet und fordert nur eine eine einzige Methode: Die execute(Runnable<T> r) Methode.

Die eigentliche Implementierungsklasse für Executors ist also durchaus ein ThreadPoolExecutor-Objekt oder ein ScheduledThreadPoolExecutor-Objekt, aber üblicherweise liefern alle Methode als Type ein Interfaces.

ExecutorService

ExecutorService ist eine das Interface Executor erweiterndes Interfaces. Es fügt die Methoden submit(..) für die Ausführung eines einzelnen Tasks, invokeAll(..) für eine List von Callables und shutdown() für ein kontrolliertes Bitten um Beendingung hinzu.

Das ExecutorService Interfaces reduziert damit die Sicht auf die Methoden, die man vom ThreadPoolExecutor für das Starten einzelner oder mehrerer Callables benötigt.

Mit shutdown() wird werden die aktuellen als Thread bereits begonnenden Tasks zuende ausgeführt, aber keine neuen mehr begonnen.

ScheduledExecutorService

Das Interface ScheduledExecutorService fügt weitere Methoden für die Zeitsteuerung hinzu, darunter schedule(..) und scheduleAtFixedRate()

Executors Factory Methoden

Die Factory-Methode Executors.newFixedThreadPool() liefert alle Instanzen der ThreadPoolExecutor-Klasse oder der ScheduledThreadPoolExecutor-Klasse stetse als Interface.

Will man einen detaillierten Zugriff auf mehr Methoden haben, muss man eine implizite Typkonvertierung vornehmen und schlichtweg «casten».

Beispiel: ThreadPoolExecutor


ThreadPoolExecutor pool = (ThreadPoolExecutor) Executors.newFixedThreadPool(2);
pool.setCorePoolSize(10); // dynamisch erhöhen 

Beispiel: ScheduledThreadPoolExecutor


ScheduledThreadPoolExecutor scheduledPool = (ThreadPoolExecutor) Executors.****;
scheduledPool.setCorePoolSize(10); // dynamisch erhöhen 
UI ORGANIZED.

UIO3 Es ist einfacher als Du denkst.

Stelle noch heute Deine Anfrage.

uio--WebPageFooter-Module