我需要转换下一个同步方法:
method (String, String, Object)
到异步方法。
主要问题是我们使用Java 1.4而且我不能使用Executor,Future,...
有什么想法吗?
答案 0 :(得分: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
接口来获得不同的回报。与Swing / AWT中的任何*Listener
接口进行比较。