新疆软件开发

本站首页 软件开发 成功案例 公司新闻 公司简介 客服中心 软件技术 网站建设
  您现在的位置: 新疆二域软件开发公司 >> Java技术 >> 文章正文

java中如何处理http连接超时的问题

这段时间做j2me的一个小游戏.用到了http连接,学习了论坛上说的一种方法.

"声明一个boolean公共变量,表明当前httpconnection是否得到服务器回应。

你的连接线程中在连接之前置这个变量为false;

另起一个监视线程,拿到那个HttpConnection的连接对象,并循环监视这个boolean公共变量。如果指定时间内(20秒后)你的boolean公共变量还是false,那么就主动置httpconnection=null。这样,那边连接线程就会抛出异常退出来。"  -----zhengyun

写了Timer类来实现.(学习国外一个网站上的写法)

class Timer extends Thread {
  /** 每个多少毫秒检测一次 */
  protected int m_rate = 100;

  /** 超时时间长度毫秒计算 */
  private int m_length;

  /** 已经运行的时间 */
  private int m_elapsed;

  /**
   * 构造函数
   * 
   * @param length
   *            Length of time before timeout occurs
   */
  public Timer(int length) {
   // Assign to member variable
   m_length = length;

   // Set time elapsed
   m_elapsed = 0;
  }
  /**
   * 重新计时
   *
   */

  public synchronized void reset() {
   m_elapsed = 0;
   System.out.println("reset timer");
  }
  /**
   * 故意设置为超时,可以在服务器有返回,但是错误返回的时候直接调用这个,当成超时处理
   *
   */
  public synchronized void setTimeOut()
  {
   m_elapsed = m_length+1;
  }

  /** 
    */
  public void run() {
   // 循环

   System.out.println("timer running");
   for (;;) {
    // Put the timer to sleep
    try {
     Thread.sleep(m_rate);
    } catch (InterruptedException ioe) {
     continue;
    }

    synchronized (this) {
     // Increment time remaining

  m_elapsed += m_rate;

     // Check to see if the time has been exceeded
     if (m_elapsed > m_length && !isConnActive) { //isConnActive 为全局变量
      // Trigger a timeout
      timeout();
      break;
     }
    }

   }
  }

  /**
   * 超时时候的处理
   *
   */
  public void timeout() {
      httpConnection = null;
      System.out.println("conn time > " + TIME_OUT + " ms");
    }
 }


 

在http连接线程调用的同是调用 new Timer(20*1000).start();

需要重新计时时候调用timer.reset();

不知道大家有没有更好的方法可以一起探讨一下!

作者:未知 | 文章来源:未知 | 更新时间:2007-12-25 13:02:02

  • 上一篇文章:

  • 下一篇文章:

  • 相关文章:
    JAVA开发的6个实践的例子
    JAVA中的抽象类型的一些概念
    java语言开发程序中的几个例子大家看看
    了解java开发语言在软件开发中的几个误区
    如何才能使用Java实现内部领域的特定语言
    Java开发学习小心使用Date以及Time类
    sun最近修补了一部分java的安全补丁
    Java程序员应该了解那些开源协议
    java性能优化的一些见解
    解析c#语言和java语言最相似的地方
    软件技术
    · 开发语言
    · Java技术
    · .Net技术
    · 数据库开发
    最新文章  
    ·j2se 嵌入式脚本抓取引擎
    ·JAVA开发的6个实践的例子
    ·JBuilder7 / Weblogic7开发
    ·JAVA中的抽象类型的一些概
    ·java语言开发程序中的几个
    ·了解java开发语言在软件开
    ·如何才能使用Java实现内部
    ·Java开发学习小心使用Date
    ·Java程序员应该了解那些开
    ·java性能优化的一些见解
    ·介绍JDK5.0一些collection
    ·基础学习:java中使用存储
    ·解析c#语言和java语言最相
    ·Java语言学习:jAVA中 的多
    ·Java是不是应该增加新特性
    关于我们 | 软件开发 | 下载试用 | 客服中心 | 联系我们 | 友情链接 | 网站地图 | 新疆电子地图 | RSS订阅
    版权所有 © 2016 新疆二域软件开发网 www.k8w.net All Rights Reserved 新ICP备14003571号
    新疆软件开发总机:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆乌鲁木齐北京中路华联大厦A-5C 邮编:830000