• 分析代码:教材P132&JEETT文档


    一.分析教材P132的程序清单:

      //规定了Filter负责拦截所有的用户请求的过滤范围。

      long before = System.currentTimeMillis();    ..........     long after = System.currentTimeMillis();

    //将请求强制转换为HttpServletRequest型再赋给HttpServletRequest 请求对象hrequest

      HttpServletRequest hrequest = (HttpServletRequest) request ; 

    //通过getServletPath()函数打印Filter 已经拦截到用户的请求的地址

    System.out.println("Filter 已经拦截到用户的请求的地址: "  + hrequest.getServletPath());  

    二.总结JEETT文档中两段代码的差别,并分析启动代码后的效果有什么不同?

    1.首先介绍一下什么是异步处理、异步任务

    异步处理:异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。以CAsycSocket类为例(注意,CSocket从CAsyncSocket派生,但是其功能已经由异步转化为同步),当一个客户端通过调用 Connect函数发出一个连接请求后,调用者线程立刻可以朝下运行。当连接真正建立起来以后,socket底层会发送一个消息通知该对象。这里提到执行部件和调用者通过三种途径返回结果:状态、通知和回调。可以使用哪一种依赖于执行部件的实现,除非执行部件提供多种选择,否则不受调用者控制。如果执行部件用状态来通知,那么调用者就需要每隔一定时间检查一次,效率就很低(有些初学多线程编程的人,总喜欢用一个循环去检查某个变量的值,这其实是一种很严重的错误)。如果是使用通知的方式,效率则很高,因为执行部件几乎不需要做额外的操作。

    AsyncTask: 即asynchronous task,异步任务。AsyncTask实际上是围绕Thread和Handler设计的一个辅助类,在内部是对Thread和Handler的一种封装。AsyncTask的异步体现在由后台线程进行运算(访问网络等比较耗时的操作),然后将结果发布到用户界面上来更新UI,使用AsyncTask使得我不用操作Thread和Handler。

    2.异步与同步的区别是什么?

    同步与异步的区别:在于请求的内容是不是立刻返回,同步请求需要等待结果返回后才能继续执行。单线程的执行的时候,需要顺序执行,如果碰到一个计算量很大,很耗时的函数需要执行,该线程就必须在这里等待结果计算出来以后,才能继续执行。

    异步请求理论上不需要等待请求的结果,将耗时的计算交给另外一个线程,在结果计算完成后会通知主线程。实际上,异步请求会立刻得到一个临时结果,然后异步请求就可以继续执行了,当异步线程返回真正结果后再通知主线程,然后主线程在做出动作。

    3.根据上面的基础知识,可大致得出文档中代码的区别为:

    (1)request.startAsync()导致请求被异步处理; 在服务方法结束时,响应不会发送到客户端。

    (2)acontext.start(new Runnable() {…​}) 从容器中获取新线程。

    (3)run()内部类的方法的代码在新线程中执行。内部类可以访问异步上下文以从请求读取参数并写入响应。调用complete()异步上下文的 方法将提交响应并将其发送给客户端。

    运行效果不同之处:使用异步处理后的例子在大负载的情况下响应速度变快,服务器吞吐量变大

    参考:http://www.cnblogs.com/real-psyyyy1015/p/8641580.html

  • 相关阅读:
    单独下载克隆clone github中master 分支的文件夹
    caffe makefile.config anaconda2 python3 所有问题一种解决方式
    问题解决
    找不到cannot find -lpython3.5m caffe anaconda python3 ubuntu16.04
    bash./ autogen 没有这个文件 ubuntu16.04git安装glog报错
    cumulative match score
    【Python网络编程】复习
    【Python网络编程】爬取百度贴吧、小说内容、豆瓣小说、Ajax爬微博、多线程爬淘宝
    【Python网络编程】UDP聊天、TCP文件下载、多线程UDP聊天器、多进程拷贝文件
    【前端性能】网站性能优化
  • 原文地址:https://www.cnblogs.com/nictang/p/8649871.html
Copyright © 2020-2023  润新知