如何在Java 1.4中将sync方法转换为异步方法

时间:2013-08-21 07:22:00

标签: java java1.4

我需要转换下一个同步方法:

method (String, String, Object)

到异步方法。

主要问题是我们使用Java 1.4而且我不能使用Executor,Future,...

有什么想法吗?

1 个答案:

答案 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接口进行比较。