`
rayloo
  • 浏览: 84351 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java中处理http连接超时

阅读更多

http是无状态的连接,不像socket可以有timeout的异常,因此在判断超时上一直比较困扰.

这段时间做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();

不知道大家有没有更好的方法

分享到:
评论

相关推荐

    java中处理http连接超时的方法.pdf

    java中处理http连接超时的方法.pdf

    java中处理http连接超时的方法借鉴.pdf

    java中处理http连接超时的方法借鉴.pdf

    Java中数据库连接池原理机制的详细讲解

    本文讨论的连接池包括一个连接池类(DBConnectionPool)和...还能够处理无效连接(原来登记为可用的连接,由于某种原因不再可用,如超时、通讯问题,并能够限制连接池中的连接总数不低于某个预定值和不超过某个预定值。

    数据库连接池(database connection pool)是在 Java 中用于管理数据库连接的一种技术

    数据库连接池(database connection pool)是在 Java 中用于管理数据库连接的一种技术。它的主要目的是提高数据库连接的重用性和性能。在传统的数据库连接方式中,每次与数据库建立连接时都需要进行一系列的网络通信...

    Java网络编程教程之设置请求超时的方法

    主要给大家介绍了关于Java网络编程教程之设置请求超时的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

    java web开发中大量数据导出Excel超时(504)问题解决

    开发测试时候导入数据遇到大数据导入的问题,整理了下,需要的朋友可以参考下

    java使用Jsoup连接网站超时的解决方法

    jsoup是一个非常好的解析网页的包,用java开发的,提供了类似DOM,CSS选择器的方式来查找和提取文档中的内容,提取文档内容时会出现超时的情况,解决方法可看下

    java开源包4

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    java开源包11

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包6

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包9

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包101

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包5

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包8

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

Global site tag (gtag.js) - Google Analytics