Как преобразовать метод синхронизации в асинхронный метод в 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.

Другие вопросы по тегам