异步处理

  • 什么是异步处理,官方说法:异步处理就是按照不同步的程序处理问题,与同步处理相对。这简直就是废话?我举个例子来说什么是异步处理。比如:
    你是个倒霉蛋,被很多人借了钱,你向张三要他还钱,他说没钱要几天后还,然后几天后你依旧向张三要钱,如果他拖着不还,你就一直等着,如果庆幸他还了,你在继续向李四要钱。这就是
    同步处理, 当你向张三要钱之后并向李四要钱这就是异步处理,你不用一直等张三给你钱后在向其他人要,这是异步处理的特点。

    以下我实现了一个简单异步处理的代码,分为WebClient客户端,Server服务器,AhCallback接口,客户端实现接口
    选择什么时候用 异步处理,回调信息,服务段接受客户端信息并通过接口返回信息,
    接口作用抽象出回调函数让客户端实现(有人要问了,为什么要这么做,不用这个可以吗?答案是可以,你也可以通过其他方式实现,不过那样不好,利用接口体现面对对象编程的思想,提高代码的鲁棒性,你要想成为大牛重在理解思想)。

public interface AhCallback {
    /**
     * @author JLH
     * @since 2017/6/3
     * AhCallback回掉接口
     * ahCallback回掉函数
     * */
   public void ahCallback(String back);
}

//服务器类
public class Server {

   public void serverView(WebCilent wc,String str){
       System.out.println("服务端接受到   "+str);
    //可加可不加,模拟网络延迟   
       try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {

        e.printStackTrace();
    }

       //回调,回调成功200表示
       wc.ahCallback("200");
   }
}
//客户端类
public class WebCilent implements AhCallback{
    /**
     * @author JLH
     * @since 2017/6/3
     * 模拟客户端
     * */
    private Server server;

    public WebCilent(Server server){
        this.server=server;
    }
    //实现简单异步调用
    public void webCilent(final String str){

        new Thread(){
            public void run(){
                server.serverView(WebCilent.this, str);
            }
        }.start();

    }


    @Override
    public void ahCallback(String back) {

        System.out.println("接收服务器传回数据  "+back);
    }

}


//测试类
import org.junit.Test;

public class CallBackTest {
   /*  @Test
    public void callback(){
        Server server=new Server();
        WebCilent wc=new WebCilent(server);
        wc.webCilent("hello");
    }*/

     public static void main(String[] args) {
         Server server=new Server();
        WebCilent wc=new WebCilent(server);
        wc.webCilent("hello");
    }
}
  • 这里发生意见有趣的事,就是单元测试Junit不支持多线程,它不会等你吧子线程里的东西运行完在结束的,如果要使用单元测试就要使用GroboUtils
    了,感兴趣的话你可以google下。

**异步处理典型的一个代表
是AJAX的异步处理。一般用来显示登陆或者其它列表,目前这是我碰到的运用场景。**

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值