在实际的下载中会使用多线程下载,这样会抢占更多的CPU资源来增强下载速度:
public class MulThreadDownLoad(){ public static final void main(String[] args){ String path = "http://127.0.0.1:8080/myweb/test.text" new MulThreadDownLoad().downLoad(path); } //下载文件方法 private downLoad(String path,int threadSize){ URL url=new URL(path); HttpURLConnection conn=( HttpURLConnection)url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); if(conn.getResponseCode()==200){ int length = conn.getcontentLength(); File file=new File(getFileName(path)); RandomAccessFile accessFile = new RandomAccessFile(file,"rwd"); accessFile.setLength(length); accessFile.close(); //计算每条线程下载的数据量 int block = length%threadSize==0 ? length/threadSize: length/threadSize+1; //开启多个线程 for(int threadId=0;threadId<threadSize;threadId++){ new DownloadThread().start(); } } } private String getFileName(String path){ return path.subString(path.lastIndexOf("/")); } private class DownloadThread extend Thread{ private int threadId; private int block; private URL url; private File file; private DownloadThread (int threadId,int block,URL url,File file){ this.threadId=threadId; ... } public void run(){ int start= threadId*block; int end = (threadId+1)*block-1; RandomAccessFile accessFile = new RandomAccessFile(file,"rwd"); accessFile.seek(start); HttpURLConnection conn=HttpURLConnection)url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); conn.setRequestProperty("range","bytes="+start+"-"+end); //注意分段下载返回的成功码值为206,不是200 if(conn.getResponseCode()==206){ //省略流读取数据 InputStream in = conn.getInputStream(); } } } }
相关推荐
winform实现多线程下载 winform实现多线程下载 winform实现多线程下载
该demo实现了android平台的多线程下载的功能,代码注释比较详细,可以看看
C#实现多线程下载文件,结合多线程技术的各方面知识,是比较好的学习例子。
java实现多线程下载文件功能,通过线程池管理,实现下载文件速度快,安全。
java实现多线程下载,一个小例子,实现了分段多线程下载
1. 把每个下载文件切成若干个块...2. HTTP Header里增加Range,如果服务器返回Cotent-Range 说明服务器支持文件定位,可以实现多线程下载 详细看这里 http://blog.csdn.net/maoxiang/archive/2010/04/02/5446293.aspx
java实现多线程下载,控制台实时输出下载进度,对于学习多线程与网络有一定的帮助
通过WEB服务器来实现PHP多线程功能,当然,对多线程有深入理解的人都知道通过WEB服务器实现的多...利用curl实现多线程下载图片类,其实是php利用curl实现的一个多线程类,有了这个类,我们也可利用该类执行多线程任务了。
通过WEB服务器来实现PHP多线程功能,当然,对多线程有深入理解的人都知道通过WEB服务器实现的多...利用curl实现多线程下载图片类,其实是php利用curl实现的一个多线程类,有了这个类,我们也可利用该类执行多线程任务了。
完成了在android平台上实现多线程下载的demo。
python实现多线程下载大量图片的代码,代码中加入了代理ip,加入了随机head,这两项内容可以防止客户机ip被屏蔽,从目前测试的结果来看,代码的使用效果非常好,对于有需要的小伙伴可以下载使用。同理该代码可以用于...
Java实现多线程下载源代码 很有学习的价值
c++实现多线程下载同一个http资源文件。
多线程下载:1、创建URL对象; 2、获取指定URL对象所指向资源的大小; 3、在本地磁盘上创建一个与网络资源相同大小的空文件; 4、计算每条线程应该下载网络资源的哪个部分; 5、依次创建、启动多线程来下载网络资源...
使用qt线程池实现多线程http请求,支持限速下载,可以设置全部下载的网络上限,和单个线程的网络上限。可以实时显示当前下载速度。
一个用JAVA实现多线程下载的应用程序和源代码!
主要介绍了python 实现多线程下载m3u8格式视频,使用fmmpeg合并的实例代码,需要的朋友可以参考下