Как преобразовать метод синхронизации в асинхронный метод в Java 1.4
Мне нужно преобразовать метод синхронизации, как показано ниже:
method (String, String, Object)
в асинхронный метод.
Основная проблема в том, что мы работаем с Java 1.4, и я не могу использовать Executor, Future, ...
Есть идеи?
1 ответ
Определите интерфейс обратного вызова (если он еще не доступен) и заставьте ваш метод принимать интерфейс в качестве параметра. Метод сработает и выполнит свою работу, а когда он закончится, он вызовет обратный вызов.
Пример:
int synchronousMethod(int arg0, String arg1) {
int result = doStuff();
return result;
}
становится
void asynchronousMethod(int arg0, String arg1, Callback callback) {
try {
int result = doStuff();
} catch (Throwable t) {
callback.onFailure(t);
return;
}
callback.onSuccess(result);
}
где Callback
это что-то вроде
interface Callback {
onSuccess(int result);
onFailure(Throwable t);
}
Предпочтительно использовать универсальные типы для Callback
результат (GWT, например, использует общий AsyncCallback<ResultType>
это идентично интерфейсу выше), но поскольку дженерики не доступны в 1.4, вы можете использовать Object
и разыграть или иметь разные Callback
интерфейсы для разных возвратов. Сравните с любым из *Listener
интерфейсы в Swing/AWT.