当前位置:  技术问答>java相关

如何断开一个URLConnection或者HTTPURLConnection不让超时连接发生?有人说把他们放到线程里面,那么如何强迫杀死该线程?

    来源: 互联网  发布时间:2015-01-26

    本文导语:  如何断开一个URLConnection或者HTTPURLConnection不让超时连接发生?超时对软件效率有很大影响,所以如果访问到一些UnknownHost,必须把java.net.UnknownHostException出来以前断掉连接,有人说把他们放到线程里面,那么如何强迫杀...

如何断开一个URLConnection或者HTTPURLConnection不让超时连接发生?超时对软件效率有很大影响,所以如果访问到一些UnknownHost,必须把java.net.UnknownHostException出来以前断掉连接,有人说把他们放到线程里面,那么如何强迫杀死该线程?

|
import java.util.*;
import java.net.*;
import java.io.*;
public class TimedUrlConnection implements Observer {
private URLConnection ucon = null;
private int time = 300000;//max time out
private boolean connected = false;
public TimedUrlConnection (URLConnection ucon,int time) {
this.ucon = ucon;
this.time = time;
}
public boolean connect() {
ObservableURLConnection ouc = new
ObservableURLConnection(ucon);
ouc.addObserver(this);
Thread ouct = new Thread(ouc);
ouct.start();
try {
ouct.join(time);
}
catch (InterruptedException i) {
//false, but should already be false
}
return(connected);
}
public void update(Observable o, Object arg) {
connected = true;
}//end of public void update(Observable o, Object arg)
}
class ObservableURLConnection extends Observable implements Runnable {
private URLConnection ucon;
public ObservableURLConnection(URLConnection ucon) {
this.ucon = ucon;
}//end of constructor
public void run() {
try {
ucon.connect();
setChanged();
notifyObservers();
}
catch (IOException e) {
}
}//end of public void run()
}



//~~~~~~~~~~~~~~~~~~~Usage~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
URL url=new URL(/tech-qa-java/someurlname/index.html);
URLConnection urlconn=url.openConnection();
TimedUrlConnection timeoutconn=new TimedUrlConnection(urlconn,100000);//time out: 100seconds
boolean bconnectok=timeoutconn.connect();
if(bconnectok==false)
{
//urlconn fails to connect in 100seconds
}
else
{
//connect ok
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java开发知识 iis7站长之家
  • (100)"断开的管道" 在Socket编程当中,如果我连续发送包,例如1000次,总会出现"断开的管道"的错误提示,请问如何解决
  • socket 断开连接如何再恢复连接
  • socket连接总断开?
  • 请教:关于[linux/unix环境下连接到Oracle数据库后断开连接]的问题
  • socket 断开
  • 客户端 socket 断开后 服务器端系统如何处理?
  • 请问如何在服务器端获得 socket 断开的消息?
  • 使用 epoll或poll ,如何确定 与客户端的链接断开 ?
  • 后台进程和与控制终端断开的进程是一个意思吗?
  • Linux下的Socket通信如何断开连接的端口从而实现重复使用该端口
  • 如何检测网线是否断开?
  • linux 有线连接了却显示有线连接断开是怎么回事
  • 系统挂盘会莫名的断开
  • 网线断开后,send函数返回值大于0,而不是-1
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • usb设备从断开至重新连接成功这整个过程中的耗时?
  • 急问:怎么判断一个非阻塞的socket已经断开了?
  • socket问题,当客户端关闭或者实际链路断开后服务器端怎么判断?
  • SOCKET调用close断开连接的时候回主动发FIN ACK包吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3