声明一个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
对于超时的定义,通常包含连接超时(尝试建立连接的时间限制)和读取超时(等待服务器响应的时间限制)。在`HttpURLConnection`中,可以通过`setConnectTimeout()`和`setReadTimeout()`设置这两个超时值。对于OkHttp...
java中处理http连接超时的方法借鉴.pdf
1. **Web服务器超时处理** - **Apache**:在Apache服务器中,当使用FastCGI与PHP-FPM集成时,存在三个关键的超时设置。缺省情况下,FastCGI的连接超时通常设置为30秒。若需要调整,可以在`httpd.conf`中修改`...
在Java中,超时处理通常涉及到网络I/O操作,如HTTP请求、数据库连接、Socket通信等。以下是一些核心知识点: 1. **Socket超时**:Java的`Socket`类提供了设置超时的方法,如`setSoTimeout(int timeout)`,这用于...
本文将深入探讨如何在Java中有效处理这些方面的问题,特别是超时处理解决方案,这对于构建高效、稳定的网络应用至关重要。 ### Java访问网络 在Java中,访问网络通常涉及到使用`java.net`包中的类,如`URL`和`...
本主题聚焦于"cpp-并行执行http请求支持超时设置",这涉及到并发处理、HTTP协议以及时间管理等核心概念。 首先,"并行执行http请求"指的是同时发起多个HTTP请求,以提高程序的执行效率。在多核处理器和现代操作系统...
Nginx(发音为 "engine-x")是一个高性能的HTTP和反向代理服务器,它以事件驱动和异步非阻塞的方式运行,能够处理数以万计的并发连接,同时保持低内存占用。Nginx最初由俄罗斯的程序员Igor Sysoev开发,并在2004年...
解决这个问题通常涉及调整超时设置、优化服务性能、检查网络连接或采用重试策略等。 描述中提到的“AXIS2”是Apache软件基金会的一个开源Web服务框架,它用于部署和实现Web服务。AXIS2提供了高效的执行模型,支持...
1.下载进度条展示,支持暂停,停止功能 2.显示下载/剩余大小,剩余时间,下载速度 3.多线程下载,不阻塞界面线程 4.文件断点续传下载 5.下载请求超时的处理 环境VS2015 + win10 64位
### Golang HTTP 连接超时与传输超时详解 #### 一、引言 在进行网络编程时,经常会遇到连接超时或传输超时的问题。对于 Go 语言(Golang)开发者而言,掌握如何设置和处理这些超时尤为重要。本文将通过一个具体的...
与之相对的短连接,则是每次发送或接收数据后立即断开,每次通信都需要重新建立连接,适用于通信频率较低,或者对资源消耗有限制的情况,如Web网站的HTTP服务。短连接的频繁建立与断开会带来较大的开销,尤其是当...
当使用`HttpURLConnection`或者第三方库如Apache HttpClient进行HTTP请求时,可以通过设置连接超时和读取超时来控制请求的超时。例如,`setConnectTimeout()`和`setReadTimeout()`方法可以分别用于设置连接和读取的...
# keep-alive 连接超时时间 lingering_timeout 5; # lingering_close 生效后的超时时间 # 设置后端服务器超时 proxy_connect_timeout 60; # 上游服务器连接超时时间 proxy_read_timeout 150; # 等待后端...
例如,我们可以设置连接超时、读取超时、写入超时等,确保每个阶段都有明确的时间限制。此外,`httpcontrol`还支持根据HTTP响应状态码或错误类型来决定是否重试请求,这样我们就可以针对不同的错误场景制定不同的...