`

Java 网页 读取 阻塞 超时的解决办法

    博客分类:
  • Java
阅读更多

URL.openConnection 方法读取网页会产生阻塞,

采用异常 或concurrent包里的future等均无效;
搜到用Socket的.setOsTimeOut(); 可以设置时间,但是自己要写不少请求的文件头;


最后看到这篇,URL有类似的方法:
http://stuffthathappens.com/blog/2007/09/10/urlopenstream-might-leave-you-hanging/


主要代码如下:
引用

URLConnection conn = url.openConnection();
// setting these timeouts ensures the client does not deadlock indefinitely
// when the server has problems.
conn.setConnectTimeout(timeoutMs);
conn.setReadTimeout(timeoutMs);
in = conn.getInputStream();
分享到:
评论

相关推荐

    用JAVA实现缓冲多线程无阻塞读取远程文件.pdf

    但基于这些信息,我们可以理解到开发者在设计这样一个远程文件读取程序时所采取的策略和方法,即利用Java的IO流、多线程、网络通信以及异常处理等技术点来实现高效、稳定、无阻塞的远程文件读取功能。这些知识点对于...

    Socket中InputStream的read方法的阻塞特性

    4. **超时设置**:设置Socket的读取超时时间,避免因网络延迟或其他原因导致的无限期阻塞。 5. **心跳机制**:在网络通信中,通过发送心跳包来检测连接状态,防止因为长时间无数据交换导致的阻塞。 6. **异步I/O**...

    java按行读取大文件并解析入库

    使用`java.nio.FileChannel`类创建一个文件通道,这允许我们以非阻塞的方式读取文件。通过`Files.newByteChannel()`方法可以从`java.nio.file.Paths`中获取文件通道。 ```java FileChannel fileChannel = Files....

    java超时控制

    Java的`Socket`类提供了设置连接超时、读取超时和写入超时的方法。`connect()`方法可以设置连接超时,防止程序在尝试建立连接时无限期等待;`setSoTimeout()`可以设置读取超时,避免在接收数据时卡住。这些设置能够...

    用Java多线程实现无阻塞读取远程文件

    ### 使用Java多线程实现无阻塞读取远程文件 #### 概述 在现代软件开发中,高效处理网络资源的读取变得尤为重要。对于Java开发者来说,利用多线程技术来实现远程文件的无阻塞读取可以显著提高应用程序的性能与响应...

    java socket长连接中解决read阻塞的3个办法

    总结来说,Java Socket长连接中解决`read()`阻塞问题可以通过约定数据长度、设置超时时间或关闭连接等方式实现。具体选择哪种方法,需要根据实际应用的需求和限制来权衡。在某些情况下,可能需要结合多种策略,以...

    android串口调用,使用c开发的,可以设置串口超时

    `VTIME`以十分之一秒为单位设置读操作超时,而`VMIN`设置至少需要读取的字符数,当达到该数目或超时后,读操作返回。 5. **读写操作**: - 使用`read()`和`write()`函数进行串口数据的读写。设置超时后,`read()`...

    JavaNIO非阻塞服务器示例.pdf

    `select(1)`方法会阻塞1秒,或者直到有事件发生,这使得服务器能够控制超时行为。 `ServerSocketChannel`是一个多路复用的套接字通道,它用于监听客户端的连接。`ServerSocketChannel`通过`open()`方法创建,并绑定...

    java实现的非阻塞Http服务器文档和源码

    非阻塞模式下,服务器不会立即读取整个请求,而是等待数据可用时再读取,这样可以提高效率。 在处理完请求后,服务器需要生成HTTP响应并发送回客户端。同样,使用非阻塞模式,服务器会在数据准备好时才写入...

    用JAVA实现缓冲多线程无阻塞读取远程文件.doc

    在Java编程中,实现多线程无阻塞读取远程文件是一种提高程序效率的重要技术。在上述文档中,作者提出了一个使用环形缓冲区和多线程来优化远程文件读取的方案。以下是对这个方案的详细解释: 首先,环形缓冲区(Ring...

    Java程序读取手机GPRS内容

    在Java编程环境中,读取手机GPRS(General Packet Radio Service)内容主要涉及到网络通信和数据解析方面的知识。GPRS是一种移动通信技术,允许手机通过分组交换的方式传输数据,为移动设备提供了相对较低延迟的数据...

    java编写oracle的存储过程,为什么调用System.in阻塞IO时不起作用?还报错?

    在Java编程中,Oracle存储过程的调用与标准输入(System.in)的交互可能会遇到一些问题,特别是当尝试使用System.in进行阻塞IO操作时。这个问题通常涉及到Java的多线程概念、I/O流的处理以及Oracle存储过程的执行...

    Linux下Socket连接超时的一种实现方法

    Linux 下 Socket 连接超时的一种实现方法 在 Linux 环境下,设置套接字(Socket)连接超时是一件非常重要的事情。下面我们将详细介绍 Linux 下 Socket 连接超时的一种实现方法。 首先,需要创建套接字,并将其设置...

    JAVA Socket超时浅析 转.doc

    Java Socket的connect()方法可以设置连接建立的超时时间,如果在指定的timeout时间内,三次握手未能完成,那么将会抛出TimeoutException。需要注意的是,这里的超时不仅包括TCP层面的握手超时,还涵盖了应用层可能...

    JAVA Socket超时浅析.docx

    这个方法可以设置读操作的超时时间,如果在设定的时间内没有读取到数据,将会抛出`SocketTimeoutException`。这在处理长时间无响应的连接时特别有用,防止程序陷入无限等待。 在进行Socket编程时,为了处理可能出现...

    cxf超时设置

    可以在创建服务客户端时,通过`ClientProxyFactoryBean`的`setConnectionTimeout`和`setReceiveTimeout`方法来设置超时: ```java ClientProxyFactoryBean factory = new ClientProxyFactoryBean(); factory....

    java获取电子称重量数据

    4. **读取和解析数据**:连接成功后,你可以通过读取串口的输入流来获取电子秤发送的数据。这些数据可能是二进制或ASCII编码的,需要根据电子秤的通信协议进行解析,转换为有意义的重量值。 5. **通信协议**:每种...

    Socket接受数据超时

    在本篇中,我们将深入探讨Socket接收数据超时的原理,以及如何利用Java中的`Callable`接口来解决这个问题。 首先,理解Socket的基本概念至关重要。Socket是应用层与传输层之间的接口,它允许应用程序通过TCP/IP协议...

    java通过url读取文件内容示例

    这个方法使用了Java的非阻塞I/O(NIO)功能,通过`ReadableByteChannel`读取数据。我们创建了一个`ByteBuffer`,并使用`read()`方法将数据读入缓冲区,然后转换为字符串输出。 在实际应用中,可能还需要处理HTTP...

Global site tag (gtag.js) - Google Analytics