Java 实现异步调用

在调用一个方法的时候,程序会进入被调用方法体内,执行完这个被调用方法后,才返回执行下一条语句。怎么做到像ajax异步请求一样,发送请求后,没等请求响应就执行下一条语句呢 ? 对于java的异步请求,找了许多教材都没有找到,如thinking in java、core java2......等等。受多线程下载工具以及mootools的Request的启发,做了一个java版的Request,不知它的性能如何。

Request: 请求载体

public class Request {
    private RequestContent rc; //请求主体
    public Request(RequestContent rc) {
        this.rc = rc;
    }
    protected void start() { //开始请求
        final Thread t = new Thread(new Runnable() {
            public void run() {
                try {
                    rc.doSomeThing(); //响应请求
                } catch(Exception e) {
                    e.printStackTrace();
                    rc.onFailure(); //如果执行失败
                }
                rc.onSuccess(); //如果执行成功
            }
        });
        t.start();
    }
}


RequestContent: 请求主体

abstract class RequestContent {
    void onSuccess() { //执行成功的动作。用户可以覆盖此方法
        System.out.println("onSuccess");
    }
    void onFailure() { //执行失败的动作。用户可以覆盖此方法
        System.out.println("onFailure");
    }
    abstract void doSomeThing(); //用户必须实现这个抽象方法,告诉子线程要做什么
}


Test: 测试

new Request(new RequestContent() {
    void doSomeThing() {
        System.out.println("doSomething");
    }
    void onSuccess() {
        System.out.println("override onSuccess");
    }
}).start();

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。