Potrebujem previesť synchronizačnú metódu, ako je nasledujúca:
method (String, String, Object)
na asynchrónnu metódu.
Hlavným problémom je, že pracujeme s programom Java 1.4 a nemôžem používať program Executor, Future, ...
Nejaké nápady?
odpovede:
1 pre odpoveď č. 1Definujte rozhranie spätného volania (ak už neexistuje)k dispozícii) a urobte zo svojej metódy rozhranie ako parameter. Metóda pôjde preč a bude pracovať, a keď bude hotová, zavolá spätné volanie.
Príklad:
int synchronousMethod(int arg0, String arg1) {
int result = doStuff();
return result;
}
stáva
void asynchronousMethod(int arg0, String arg1, Callback callback) {
try {
int result = doStuff();
} catch (Throwable t) {
callback.onFailure(t);
return;
}
callback.onSuccess(result);
}
kde Callback
je niečo ako
interface Callback {
onSuccess(int result);
onFailure(Throwable t);
}
Uprednostňuje sa použitie generických typov pre internet Callback
výsledok (napríklad GWT používa generický AsyncCallback<ResultType>
totožné s rozhraním uvedeným vyššie), ale keďže generiká nie sú dostupné v 1.4, môžete ich použiť Object
a obsadenie alebo rôzne Callback
rozhrania pre rôzne výnosy. Porovnať s ktorýmkoľvek z *Listener
rozhrania v Swing / AWT.