J'ai besoin de convertir une méthode de synchronisation comme celle-ci:
method (String, String, Object)
à une méthode asynchrone.
Le problème principal est que nous travaillons avec Java 1.4 et que je ne peux pas utiliser Executor, Future, ...
Des idées?
Réponses:
1 pour la réponse № 1Définir une interface de rappel (si on n'est pas déjà "disponible) et faites en sorte que votre méthode prenne l'interface en paramètre. La méthode s’exécutera et fera son travail, et quand elle sera terminée, elle appellera le rappel.
Exemple:
int synchronousMethod(int arg0, String arg1) {
int result = doStuff();
return result;
}
devient
void asynchronousMethod(int arg0, String arg1, Callback callback) {
try {
int result = doStuff();
} catch (Throwable t) {
callback.onFailure(t);
return;
}
callback.onSuccess(result);
}
où Callback
est quelque chose comme
interface Callback {
onSuccess(int result);
onFailure(Throwable t);
}
Il est préférable d’utiliser des types génériques pour la Callback
résultat (GWT, par exemple, utilise un générique AsyncCallback<ResultType>
identique à l'interface ci-dessus), mais comme les génériques ne sont pas disponibles dans la version 1.4, Object
et jeter ou avoir différents Callback
interfaces pour différents retours. Comparez avec l'un des *Listener
interfaces dans Swing / AWT.