Ich bin neu in der asynchronen Aufgabenausführung im Frühjahr, also bitte verzeih mir, wenn das wie eine dumme Frage klingt.
Ich habe gelesen, dass die Async-Annotation ab Spring 3.x auf Methodenebene eingeführt wird, damit der Aufruf dieser Methode asynchron erfolgt. Ich lese auch, dass wir den ThreadPoolTaskExecutor in der Spring-Konfigurationsdatei konfigurieren können.
Was ich nicht verstehen kann, ist, dass das Angeben einer @ Async-Annotationsmethode von einem Tak-Executor annehmen lässt - AsyncTaskExecutor
Früher haben wir etwas in einer Klasse gemacht:
%Vor%Und dann
%Vor%Ich bin nicht in der Lage, die Beziehung zwischen annotierten Methoden @ Async und TaskExecutor zu verstehen.
Ich habe versucht, viel über das Internet zu suchen, konnte aber nichts dazu finden.
Kann jemand dafür ein Beispiel geben?
Hier ist ein Beispiel für @Async
use:
Rufen Sie diese Methode jetzt von einer anderen Klasse auf, und sie wird asynchron ausgeführt. Wenn Sie einen Rückgabewert wünschen, verwenden Sie Future
Die Beziehung zwischen @Async
und TaskExecutor
besteht darin, dass @Async
ein TaskExecutor
hinter den Kulissen verwendet. Aus der Dokumentation:
Wenn Sie @Async für eine Methode angeben, wird standardmäßig der Executor verwendet, der wie oben beschrieben an das Element "annotation-driven" übergeben wird. Das Wertattribut der @ Async-Annotation kann jedoch verwendet werden, wenn angegeben werden muss, dass beim Ausführen einer bestimmten Methode ein anderer Executor als der Standard verwendet werden soll.
Um einen Standard-Executor zu erstellen, fügen Sie diesen zu Ihrer Spring-Konfiguration hinzu
%Vor%Oder um einen bestimmten Executor für eine einmalige Verwendung zu verwenden, versuchen Sie
%Vor%Siehe Ссылка
In der Konfigurationsdatei sollte eine anmerkungsgesteuerte Task mit dem Namen des Threadpools erwähnt werden, und die Methode mit @Async (Poolname) wird als Teil dieses Pools ausgeführt. Dies erstellt eine Proxy-Klasse für die mit @ Async Annotation und führt sie für jeden Thread aus.
Vollständiges Beispiel
Konfigurationsfrühling
%Vor%Executor-Klasse erstellt, Executor Ich habe erstellt, dass Frühling kümmert sich Thread-Management.
%Vor%Erstellen Sie einen Manager.
%Vor%Konfigurieren Sie Ihre Serviceklasse.
%Vor%Modell.
%Vor%Test zum Ausführen
%Vor%Sie können @Async zu Ihrer Methode und dem folgenden zu Ihrem Anwendungskontext hinzufügen.
%Vor%Tags und Links java multithreading spring asynchronous spring-mvc