使用Java怎么实现一个多线程断点下载

  介绍

使用Java怎么实现一个多线程断点下载?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Java多线程断点下载原理如图:

使用Java怎么实现一个多线程断点下载“> <br/> </p> <p>代码如下:</p> <pre类= import  java.io.BufferedReader;,   import  java.io.File,   import  java.io.FileInputStream,   import  java.io.InputStream,   import  java.io.InputStreamReader,   import  java.io.RandomAccessFile,   import  java.net.HttpURLConnection,   import  java.net.URL,   ,   {public  class  MutileThreadDownload /* *,才能   ,,*,线程的数量,   ,,*/,   private 才能static  int  threadCount =, 3,,   ,/* *,才能   ,,*,每个下载区块的大小,   ,,*/,   private 才能static  long  blocksize;,   ,/* *,才能   ,,*,正在运行的线程的数量,   ,,*/,   private 才能static  int  runningThreadCount;,   ,/* *,才能   ,,*,@param  args    ,,*,@throws  Exception    ,,*/,   public 才能;static  void  main (String [], args), throws  Exception  {,   ,,,//,服务器文件的路径,   ,,,String  path =,“http://192.168.1.100:8080 ff.exe",,   ,,,URL  URL =, new  URL(路径),,   ,,,HttpURLConnection  conn =, (HttpURLConnection), url.openConnection (),,   ,,,conn.setRequestMethod (“GET");,   ,,,conn.setConnectTimeout (5000),,   ,,,int  code =, conn.getResponseCode (),,   ,,,if  (code ==, 200), {,   ,,,,,long  size =, conn.getContentLength();//,得到服务端返回的文件的大小,   ,,,,,System.out.println(“服务器文件的大小:“,+,大小),,   ,,,,,blocksize =, size /, threadCount;,   ,,,,,//,1。首先在本地创建一个大小跟服务器一模一样的空白文件只   ,,,,,File  File =, new 文件(“temp.exe");,   ,,,,,RandomAccessFile  raf =, new  RandomAccessFile(文件,,“rw"),,   ,,,,,raf.setLength(大小),,   ,,,,,//,2。开启若干个子线程分别去下载对应的资源又是;   ,,,,,runningThreadCount =, threadCount;,   ,,,,,for  (int 小姐:=,1;,小姐:& lt;=, threadCount;,我+ +),{,   ,,,,,,,long  startIndex =,(小姐,安康;1),*,blocksize;,   ,,,,,,,long  endIndex =,小姐:*,blocksize 作用;1;,   ,,,,,,,if (小姐:==,threadCount), {,   ,,,,,,,,,//,最后一个线程,   ,,,,,,,,,endIndex =, size 作用;1;,   ,,,,,,,},   ,,,,,,,System.out.println(“开启线程:“,+,小姐:+,“下载的位置:“,+,startIndex  +,“~”,   ,,,,,,,,,,,+,endIndex),,   ,,,,,,,new  DownloadThread(路径,,我,,startIndex,, endIndex) .start (),,   ,,,,,},   ,,,},   ,,,conn.disconnect (),,   ,,},   ,   private 才能static  class  DownloadThread  extends  Thread  {,   ,,,private  int  threadId;,   ,,,private  long  startIndex;,   ,,,private  long  endIndex;,   ,,,private  String 路径;,   ,   ,,,public  DownloadThread (String 路径,int  threadId,, long  startIndex,,   ,,,,,,,long  endIndex), {,   ,,,,,this.path =,路径;,   ,,,,,this.threadId =, threadId;,   ,,,,,this.startIndex =, startIndex;,   ,,,,,this.endIndex =, endIndex;,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用Java怎么实现一个多线程断点下载