文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页技术开发JAVA Script → 教你java使用回调和线程处理响应全过程

教你java使用回调和线程处理响应全过程

时间:2010/4/3 11:25:00来源:本站整理作者:我要评论(14)

教你java使用回调和线程处理响应全过程

  现在程序中有许多涉及长耗时响应过程的处理,比如访问WebService,远程调用,复杂处理等,如果我们使用直接顺序执行的方式进行处理有可能导致界面停顿,响应停止,无谓等待等缺陷,这是不应该的。

  一个耗时响应过程应该采用回调和线程来处理,具体就是把原来的顺序执行修改为异步方式,并让被调用者调用调用者以获得执行结果。在附件的例子中,Viewer就是调用者,它代表界面,而LongTimeResponse是被调用者,它内部用线程启动一个耗时过程,执行完毕再通知调用者。

  Viewer类代码如下:

public class Viewer{
  private int count;
  
  public Viewer(int count){
    this.count=count;
  }
  
  public void printNewCount(int newCount){
    System.out.println("New Count="+newCount);
  }
  public int getCount() {
    return count;
  }
  public void setCount(int count) {
    this.count = count;
  }
}

 

  LongTimeResponse类代码如下,可以看出,它之所以能回调调用者,是因为其内部有调用者的引用viewer,在其构造函数中viewer被赋上了值:

package com.sitinspring;
public class LongTimeResponse implements Runnable{
  private Viewer viewer;
  private int count;
  
  public LongTimeResponse(Viewer viewer){
    this.viewer=viewer;
    this.count=viewer.getCount();
    
    caculateNewCount();
  }
  
  private void caculateNewCount(){
    Thread thread=new Thread(this);
    thread.start();
  }
  
  public void run(){
    try{
      Thread.sleep(10000);  
    }
    catch(Exception ex){
      ex.printStackTrace();
    }
    
    viewer.printNewCount(count*count*count);
  }
}

 

  调用过程如下:

  Viewer viewer=new Viewer(10);

  LongTimeResponse longTimeResponse=new LongTimeResponse(viewer);

  viewer.printNewCount(123);

  执行起来可以看出,程序先输出了

  New Count=123

  过了十秒,才输出:

  New Count=1000

  这说明,程序是异步执行的,耗时过程没有影响到主干程序的运行,而耗时过程完成后,才把返回结果通知了调用者,主干程序没有受到耗时过程的影响,因此也就不会导致界面停顿,响应停止,无谓等待等缺陷。

  以上就是使用回调和线程处理一个耗时响应的整个过程。

相关视频

    没有数据

相关阅读 FlashGet的线程数开得越多越好吗?怎样获取java线程中信息amd线程撕裂者二代有哪些 amd线程撕裂者二代对比一览MT6795跑分高吗 多线程远超高通801C++多线程系统编程技巧C#多线程的相关概念Java多线程如何防止主线的阻塞教你Java开发中多线程同步技巧

文章评论
发表评论

热门文章 JS文件中的中文在网页

最新文章 JS文件中的中文在网页关于一些Play 1.0.1资 JAVA中抽象类与接口的区别Java技巧:关于Cookie的操作JAVA AWT图形用户界面设计巧用Java将Word转换为Html网页文件

人气排行 JS文件中的中文在网页上显示为乱码解决方法怎么为Java程序添加漂亮背景图片代码JAVA AWT图形用户界面设计怎样获取java线程中信息JS简介及特点Java面向对象编程学习总结js鼠标滑过切换层效果代码下载教你java使用回调和线程处理响应全过程