2013-08-21 4 views
0

Мне нужно преобразовать метод синхронизации, как в следующий:Как преобразовать способ синхронизации асинхронного метода в Java 1.4

method (String, String, Object) 

к способу асинхронного.

Основная проблема заключается в том, что мы работаем с Java 1.4, и я не могу использовать Исполнителю, будущее, ...

Любые идеи?

ответ

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>, который идентичен i nterface выше), но так как generics недоступны в 1.4, вы можете использовать Object и лить или иметь разные интерфейсы Callback для разных возвратов. Сравните с любым из интерфейсов *Listener в Swing/AWT.

+0

Не могли бы вы подробнее рассказать, я новичок в теме темы, и я много теряю. код, который я хочу стать в асинхронном такова: для (.....) ... ... methodIWantConvert (String, String, Object); ... ... End-for; Метод, который я хочу преобразовать, является довольно обычным последовательным методом. Бесконечно благодарен. – Myolnir

+0

Поймите. Единственный вопрос, который у меня есть, заключается в том, что мой синхронный метод ничего не возвращает, недействителен, может сделать следующее? общественный интерфейс Обратный звонок { void onSuccess(); void onFailure (Throwable t); } общественного недействительный asynchronousMethod (режим String, String псевдоним, OwnBean ownBean, Обратный вызов) OwnException бросает { попробовать { syncMethod (режим, псевдоним ownBean); } Catch (исключение e) { callback.onFailure (e); возвращение; } callback.onSuccess(); } – Myolnir

+0

Справа. Если это 'void', тогда у вас есть пустой список параметров' onSuccess'. – chrylis

Смежные вопросы