2016-04-20 6 views
1

Nach Nettys Dokumente die GlobalEventExecutor ist einVerwendet Nettys GlobalEventExecuter den aktuellen Thread?

eingängig Singletons EventExecutor

das heißt, ist ein Faden verwendet und nur eine Instanz. Ich benutze den GlobalEventExecutor innerhalb eines neuen Threads. Verwendet die Klasse immer den aktuellen Thread oder verwendet sie einen Thread für alles?

Wenn die zweite richtig ist, würde es bedeuten, dass die Verwendung des GlobalEventExecutor in einem Thread-Pool nicht wirklich sinnvoll ist. Ich würde stattdessen den Thread-Pool für meine Versprechen verwenden, aber ich müsste ihn global wie den GlobalEventExecutor machen.

Wie soll ich dieses Problem lösen.

Antwort

2

GlobalEventExecutor ist ein Single-Thread-basierter Event Executor.

Diese Klasse wird bei Anforderung einer neuen Aufgabe start a new thread. Dieser Thread wird nicht mit dem Thread geteilt, der den Code ausführt.

Auch wenn Sie diese globale Instanz aus mehreren Klassen aufrufen, wird nur ein einzelner Thread im Hintergrund für die Ausführung von Aufgaben verwendet.

Wenn diese Klasse erkennt, dass für eine Weile keine Aufgaben gesendet wurden, wird ihr interner Thread beendet und bei Bedarf erneut erstellt. Diese Zeit ist standardmäßig 1 Sekunde.

This can be verified by looking at the source of GlobalEventExecutor.

+0

Ich sollte Versprechen mit meinem eigenen thead Pool innerhalb eines theadpool verwenden? Oder hat GobalEventEventexecutor einen Vorteil? –

+0

Das Umdenken der gesamten Situation endete in den folgenden Gedanken: Die GlobalEventExecutor-Instanz innerhalb des Versprechens ist nur dafür verantwortlich, das zukünftige Ereignis auszulösen. Es hat nichts mit der tatsächlichen Ausführung der Geschäftslogik zu tun. Es ist völlig in Ordnung, es in meinem eigenen Threadpool zu verwenden, oder bekomme ich hier etwas falsch? –

+0

Verwenden Sie es in Ihrem eigenen Thread-Pool ist völlig in Ordnung, aber es ist besser, die Kanäle Executer ('ctx.exec()') anstelle der globalen Executor bei der Planung der Ereignisse zu verwenden, um die Menge der Thread-Kontextwechsel zu minimieren – Ferrybig

Verwandte Themen