异步处理
来源:互联网 发布:淘宝零点抢购 编辑:程序博客网 时间:2024/05/21 15:41
什么是异步处理,官方说法:异步处理就是按照不同步的程序处理问题,与同步处理相对。这简直就是废话?我举个例子来说什么是异步处理。比如:
你是个倒霉蛋,被很多人借了钱,你向张三要他还钱,他说没钱要几天后还,然后几天后你依旧向张三要钱,如果他拖着不还,你就一直等着,如果庆幸他还了,你在继续向李四要钱。这就是
同步处理, 当你向张三要钱之后并向李四要钱这就是异步处理,你不用一直等张三给你钱后在向其他人要,这是异步处理的特点。以下我实现了一个简单异步处理的代码,分为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的异步处理。一般用来显示登陆或者其它列表,目前这是我碰到的运用场景。**
阅读全文
0 0
- 异步调用,异步处理
- 异步处理
- 异步处理
- 异步处理
- 异步处理
- 异步处理
- 消息及异步处理
- socket异步处理问题
- socket异步处理问题
- Socket 异步处理
- socket异步处理问题
- socket异步处理问题
- socket异步处理问题
- socket异步处理问题
- socket异步处理问题
- socket异步处理问题
- socket异步处理问题
- socket异步处理问题
- ZOJ 2429 Destroying The Graph 最小割(最小点权覆盖)
- 深度学习资料
- js比较两个数值是否相等
- [一天几个linux命令] CPU的架构
- window系统安装es的步骤
- 异步处理
- qwb 与学姐 lca+mst
- jQuery基本选择器、层次选择器
- MyBatis优化简化开发
- Problem: fireworks
- 一个简易的触发器实现(一)
- java 中的注解使用
- 为Fragment设置转场动画
- es启动失败,报错:Could not reserve enough space for object heap