java中输入流超时机制理解

来源:互联网 发布:高性价比耳麦知乎 编辑:程序博客网 时间:2024/06/05 10:45

在做一个异常时刻保存手机内存到SD卡的上位机项目,在做到后台服务写数据到sd卡过程中一直出错,加上超时之后问题解决。

setSoTimeout  public void setSoTimeout(int timeout)      throws SocketException启用/禁用带有指定超时值的 SO_TIMEOUT,以毫秒为单位。将此选项设为非零的超时值时,在与此 Socket 关联的 InputStream 上调用 read() 将只阻塞此时间长度。      如果超过超时值,将引发 java.net.SocketTimeoutException,虽然 Socket 仍旧有效。选项必须在进入阻塞操作前被启用才能生效。      超时值必须是 > 0 的数。超时值为 0 被解释为无穷大超时值。   参数:  timeout - 指定的以毫秒为单位的超时值。   抛出:   SocketException - 抛出异常。
因为项目中需要用到异常重传机制,这个时候,当传输过程中抛出异常的时候进行重传,之前因为没有添加超时机制,当发生异常的时候会一直阻塞,也就是默认状态下,超时值为0,无限等待,这个时候会造成数据写入不完全现象。