Devo convertire un metodo di sincronizzazione come il prossimo:
method (String, String, Object)
a un metodo asincrono.
Il problema principale è che lavoriamo con Java 1.4 e non posso usare Executor, Future, ...
Qualche idea?
risposte:
1 per risposta № 1Definire un'interfaccia di callback (se non lo è giàdisponibile) e fai in modo che il tuo metodo prenda l'interfaccia come parametro. Il metodo si spegne e fa il suo lavoro, e quando è finito, chiama il callback.
Esempio:
int synchronousMethod(int arg0, String arg1) {
int result = doStuff();
return result;
}
diventa
void asynchronousMethod(int arg0, String arg1, Callback callback) {
try {
int result = doStuff();
} catch (Throwable t) {
callback.onFailure(t);
return;
}
callback.onSuccess(result);
}
dove Callback
è qualcosa di simile
interface Callback {
onSuccess(int result);
onFailure(Throwable t);
}
È preferibile utilizzare tipi generici per il Callback
risultato (GWT, ad esempio, utilizza un generico AsyncCallback<ResultType>
che è identico all'interfaccia sopra), ma poiché i generici non sono disponibili in 1.4, è possibile utilizzare entrambi Object
e lanciare o avere diversi Callback
interfacce per rendimenti diversi. Confronta con uno dei *Listener
interfacce in Swing / AWT.