2017-06-21 2 views
0

Soweit ich weiß, Thread Pooling ist ein Prozess, der bereits erstellte Threads im Warte-Modus wiederverwendet und ihnen eine Aufgabe zuweist. Die Anzahl solcher Threads wird während der Erstellung des Pools angegeben.Gibt es Ähnlichkeiten im Konzept hinter Java Thread Pooling und Java EventQueue in AWT?

Und in Java AWT, EventQueue tut etwas ähnliches. Es wird ein Runnable Swing-Objekt am Ende der Ereigniswarteschlange bereitgestellt, und dieses Objekt wird verarbeitet, nachdem die Verarbeitung der vorherigen Objekte abgeschlossen ist.

Also ist EventQueue eine Art Thread Pooling in AWT gemacht?

Vielen Dank!

+0

Die kurze Antwort ist nein - Die 'EventQueue' wird von einem ** einzigen ** Thread (dem Event Dispatching Thread) verarbeitet. Wenn es ein 'Runnable' der Warteschlange aufruft, ruft es einfach die' run' Methode auf, andernfalls verarbeitet es das Ereignis basierend auf den internen Anforderungen des EDT – MadProgrammer

+0

Vielen Dank @MadProgrammer! – julianff

Antwort

2

Nein. Nicht einmal vage. Deine ThreadPool-Beschreibung ist ungefähr richtig, aber ich sehe nicht, warum du denkst, dass dies der Event-Queue entspricht.

Die Ereigniswarteschlange ist im Grunde eine Sammlung von Inhalten in einem Thread, um sicherzustellen, dass bestimmte Operationen nur im richtigen Thread ausgeführt werden. Es gibt keinen "Pool" von Ereigniswarteschlangen oder Ähnlichem.

+0

Danke @ John3126! Ich glaube, ich verstehe, was du gesagt hast. Also ist die EventQueue eine Warteschlange, die in einem einzigen Thread verwaltet wird? – julianff

+0

Jeder Thread kann hinzugefügt werden (das ist, wie ein Thread etwas erhält, das auf dem Event Dispatch Thread ausgeführt wird), aber es wird nur vom EDT "verwendet". – John3136

0

Ja awt.EventQueue kann als einzelner Thread-Pool-Executor betrachtet werden. Mit einem einzelnen Thread soll die Parallelität beim Ändern des Bildschirmbildes ausgeschlossen werden.

Wenn Sie Akka-Akteure verwenden, können Sie einen speziellen Dispatcher erstellen, der Akteure auf der awt.EventQueue ausführt. Akteure mit einem solchen Dispatcher können GUI-Elemente modifizieren.

Verwandte Themen