Spring 3.2 Tâche @Async avec type de retour du futur
Je suis en train de mettre en œuvre un ressort @Async tâche qui a un type de retour de l'Avenir,
mais je ne peux vraiment pas comprendre comment le faire correctement.
- Qu'ai-je à gagner à le faire ? vais-je avoir un contrôle sur ma tâche afin que je puisse l'arrêter et de le faire fonctionner ?
- Est-il une implémentation de référence sur comment je peux faire ? springsource ne fournit pas de.
MODIFIER
De source et de printemps refrence manuel :
Même les méthodes qui renvoient une valeur peut être appelée de façon asynchrone. Cependant, ces méthodes sont nécessaires
pour avoir un Avenir tapé valeur de retour. Cette offre quand même le bénéfice de l'exécution asynchrone de sorte que
l'appelant peut effectuer d'autres tâches avant d'appeler la fonction get() sur cet Avenir.
et il donne un exemple comme :
@Async
Future<String> returnSomething(int i) {
//this will be executed asynchronously
}
Comment implémenter cela correctement ?
source d'informationauteur engma
Vous devez vous connecter pour publier un commentaire.
Découvrez ce blog.
À l'aide de
@Async
vous permet d'exécuter un calcul dans une méthode asynchrone. Cela signifie que si on l'appelle (sur un Ressort managed bean), le contrôle est immédiatement retourné à l'appelant et le code de la méthode est exécutée dans un autre thread. L'appelant reçoit unFuture
objet qui est lié à l'exécution de calcul et peuvent l'utiliser pour vérifier si le calcul est en cours d'exécution et/ou d'attendre le résultat.La création d'une telle méthode est simple. L'annoter avec
@Async
et envelopper le résultat dansAsyncResult
comme indiqué dans le billet de blog.La ExecutorService pouvez planifier Appelable et retour d'un Futur objet.
L'Avenir est un espace réservé qui contient le résultat une fois qu'il est disponible. Il permet de vérifier si le résultat est là, annulez la tâche, ou de bloquer et d'attendre les résultats. L'Avenir n'est utile que lorsque vous vous attendez à un objet/valeur de la tâche.
Manière correcte de le faire à l'Avenir d'appel est:
La NextEvenNumberFinder classe:
}
Spring Integration Manuel De Référence: http://static.springsource.org/spring-integration/reference/htmlsingle/
Découvrez ce post de blog
Important de la configuration est:
Permettre async au printemps config
xml par définition:
SimpleAsyncTaskExecutor sera utilisé par défaut.
Envelopper la réponse dans un Futur<> objet
Exemple:
Vous pouvez ensuite vérifier si le résultat (le résultat.isDone())
ou attendre pour obtenir la réponse en conséquence.get()