使用URL创建网络连接、网络流的阻塞问题

在读取网络中流数据时,通常要创建一个网络连接。然而在创建URL连接时,我们通常会忽略掉设置ConnectTimeout,以及ReadTimeout:

URL url = new URL(urlstr);
URLConnection conn = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while(!in.ready()){
//等待
}
while ((line = in.readLine()) != null) {
//执行处理
}
in.close();
conn.disconnect();

这种情况下,往往会造成URL阻塞,或者读取流的阻塞。所以应该注意设置超时:

URL url = new URL(urlstr);
URLConnection conn = url.openConnection();
conn.setReadTimeout(AWAIT_TERMINATION_TIME_OUT);BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while(!in.ready()){
//等待
}
while ((line = in.readLine()) != null) {
//执行处理
}
in.close();
conn.disconnect();

同样在使用一些其他的网络读写相关的类对象时也应该注意设置超时,否则很有可能造成程序的阻塞挂起。所以也可以相应的设置超时:

for (Future<Object> future : list) {
    try {
        Object o = future.get(AWAIT_TERMINATION_TIME_OUT,TimeUnit.MILLISECONDS);
        //other processing
    } catch (InterruptedException e) {
    } catch (ExecutionException e) {
    } catch (TimeoutException e) {
    }
}

使用URL创建网络连接、网络流的阻塞问题

时间: 2024-08-01 15:37:32

使用URL创建网络连接、网络流的阻塞问题的相关文章

win10创建网络连接的方法

在Xp操作系统中,我们可以听过桌面上的"网上邻居"右键属性,快速打开网络连接界面.但是在Win10操作系统中,在"网络"上单击右键,点击"属性"打开的却不是网络连接,还需要点击一下"更改适配器设置"才可以打开网络设置界面非常的麻烦.今天系统盒小编就给大家分享下如何在桌面添加"网络连接"快捷方式. 步骤: 1.在桌面单击右键,选择"新建"-"快捷方式": 2.在&quo

Docker基本命令与使用 —— Docker容器的网络连接(四)

一.Docker容器的网络基础 通过ifconfig查看docker0的网络设备,docker守护进程就是通过docker0为docker的容器提供网络连接的各种服务. docker0是Linux虚拟网桥. Linux虚拟网桥的特点: 可以设置IP地址 相当于拥有一个隐藏的虚拟网卡 docker0的地址划分: IP:172.17.42.1 子网掩码: 255.255.0.0 MAC: 02:42:ac:11:00:00 到 02:42:ac:11:ff:ff 总共提供65534个地址 docke

Android 打开网络连接

使用url打开网络连接 String urlString = "http://"+et_url.getText()+""; if(urlString.length()>0){ try { String line = ""; URL url = new URL(urlString); URLConnection urlConnection = url.openConnection(); BufferedReader bufferedReade

Java 网络编程(三) 创建和使用URL访问网络上的资源

链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951877.html 创建和使用URL访问网络上的资源 URL(Uniform Resource Locator)是统一资源定位符的简称,它表示Internet上某一资源的地址. 通过URL我们可以访问Internet上的各种网络资源,比如最常见的WWW, FTP站点.浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源. 在目前使用最为广泛的TCP/IP中对于URL中主机名

VMWare虚拟机 网络连接模式

1 VMWare虚拟机bridged.host-only和NAT网络模式的区别和用法 VMWare提供了三种工作模式,它们是bridged(bridged模式:对应网卡vment0).NAT(网络地址转换模式:对应网卡vment8)和host-only(主机模式:对应网卡vment1).三个网卡可以理解为三个通道.要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式.(在Linux下面ifconfig显示eth0第一个网卡IP,(eth就是ethernet以太网,在这里指网络接口

Nginx作为WEB服务相关配置(性能优化,网络连接,访问控制,虚拟主机,https等等)

编译安装nginx yum -y install pcre-devel groupadd -r nginx useradd -g nginx -r nginx tar xf nginx-1.6.2.tar.gz cd nginx-1.6.2 ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf--user=nginx --group=nginx --error-log-path=/var/log/nginx

使用android真机测试http网络连接异常解决办法

最近在学校android网络编程之json解析时遇到不少问题,其中之一是在使用http协议连接网络时总是出错,捣鼓了将近两天,终于略有所悟,现记录如下. 一 .问题描述 首先我是在本地tomcat服务器上部署一个web项目,通过web项目的servlet完成对客户端连接请求的操作.其他都很顺利,在电脑浏览器上输入URL访问正常,在eclipse上创建Java项目也能正常访问.但是一旦放在android项目中,就出现错误了,抛出异常信息为:failed to connect to localhos

Android官方开发文档Training系列课程中文版:网络操作之网络连接

原文地址:http://android.xsoftlab.net/training/basics/network-ops/index.html 引言 这节课将会学习最基本的网络连接,监视网络连接状况及网络控制等内容.除此之外还会附带描述如何解析.使用XML数据. 这节课所包含的示例代码演示了最基本的网络操作过程.开发者可以将这部分的代码作为应用程序最基本的网络操作代码. 通过这节课的学习,将会学到最基本的网络下载及数据解析的相关知识. Note: 可以查看课程Transmitting Netwo

android开发笔记之网络编程—使用TCP协议和URL进行网络编程

手机本身是作为手机终端使用的,因此它的计算能力,存储能力都是有限的.它的主要优势是携带方便,可以随时打开,而且手机通常总是处于联网状态.因此网络支持对于手机应用非常重要. Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建立基于UDP协议的网络通信. Android也支持JDK提供的URL,URLConnection等网络通信