Ich überlege, was eine Timer-Implementierung zu verwenden ist, wenn Sie innerhalb von jvm auf einer Maschine so viele (nicht blockierende) Aufgaben wie möglich planen müssen.
Ich habe ScheduledThreadPoolExecutor
und HashedWheelTimer
sources (+ rad timer general docs) studiert und hier sind grundlegende Unterschiede (N - Anzahl aller ausstehenden geplanten Aufgaben, C - Radgröße):
ScheduledThreadPoolExecutor
HashedWheelTimer
Daher verwende ich HW Timer für einen solchen Anwendungsfall, weil Sie Aufgaben schnell mit minimalem Aufwand planen müssen, d. h. O (1) für neue Aufgabe. Außerdem werden Sie eine Buchhaltungsaktivität minimieren, da Sie eine geringere Anzahl an Ticks (N & lt; C) und weniger Sperrkonflikte erhalten. Das Abbrechen ist in diesem Fall nicht sehr wichtig.
Hat jemand diese Timer für ähnliche Aktivitäten getestet und welche Ergebnisse sieht man in der Praxis? Danke!
HWT . Wenn Sie nicht die Genauigkeit von -n -s benötigen, verwenden Sie das HWT. Für die meisten Client-Server-Anwendungen reicht ein HWT aus. In vielen Anwendungen im Internet, insbesondere für In-Memory-Caches, deren Timeout sich ständig änderte, war dies die einzige Option. Wir reden hier über Milliarden von Arbeitsplätzen.
Wenn Sie diese Präzisionsstufe benötigen, benötigen Sie ein System mit garantierten Unterbrechungszeiten und nicht GC-Pausen. d. h. nicht Java, nicht Intel ...:)
Tags und Links java timer netty stress-testing executorservice