美文网首页
记多线程下载

记多线程下载

作者: 小咸鱼T_T | 来源:发表于2017-03-13 13:44 被阅读0次

    URL:同一个URL对象可以多次openConnection()返回多个connection,但是一个connection调用getInputStream(),总是返回同一个inputStream。

    URLConnection.setRequestProperty(String key,String value),设置请求属性,可以设置每个线程下载的部分,格式setRequestProperty("Range", "bytes=" + startPos + "-" + endPos)。这里的key和value应该还有其他的用途,留个坑。

    read():从URLConnection获得的inputStream的read()方法并不能确保读满buffer或指定的长度,而read的返回值是此次read()的长度,所以要放在while循环中直到读满所要的长度为止,现在还不知道为什么这样设计,只是觉得很不方便。又是一个坑。

    主线程等待下载完成:一开始executorService.isTerminated()判断是否所有线程都下载完成,不完成则阻塞主线程。后来用CountDownLatch更优雅的实现此功能,CyclicBarrier同样也能完成。

    相关文章

      网友评论

          本文标题:记多线程下载

          本文链接:https://www.haomeiwen.com/subject/yabfnttx.html