#私藏项目实操分享#Java多线程下载器基础代码

千金一刻莫空度,老大无成空自伤。这篇文章主要讲述#私藏项目实操分享#Java多线程下载器基础代码相关的知识,希望能为你提供帮助。
文件下载器的基础代码1. HttpURLConnection
从互联网中下载文件的话,需要与文件所在的服务器建立连接,这里可以使用jdk提供的java.net.HttpURLConnection类来帮助我们完成这个操作。jdk11中有提供java.net.http.HttpClient类来替代HttpURLConnection,由于现在使用的是jdk8,因此先不用jdk11中的HttpClient。除此之外还有一些其他第三方提供类可以执行类似的操作,这里就不赘述了。
2.  用户标识
我们通过浏览器访问某个网站的时候,会将当前浏览器的版本,操作系统版本等信息的标识发送到网站所在的服务器中。当用程序代码去访问网站时,需要将这个标识发送过去。下面的标识大家可以拷贝到程序中。

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (Khtml, like Gecko) Chrome/14.0.835.163 Safari/535.1

下载信息1.  计划任务
文件下载的时候最好能够展示出下载的速度,已下载文件大小等信息。这里可以每隔一段时间来获取文件的下载信息,比如间隔1秒获取一次,然后将信息打印到控制台。文件下载是一个独立的线程,另外还需要再开启一个线程来间隔获取文件的信息。java.util.concurrent. ScheduledExecutorService,这个类可以帮助我们来实现此功能。
2.  ScheduledExecutorService
【#私藏项目实操分享#Java多线程下载器基础代码】在该类中提供了一些方法可以帮助开发者实现间隔执行的效果,下面列出一些常见的方法及其参数说明。我们可以通过下面方式来获取该类的对象,其中1标识核心线程的数量
ScheduledExecutorService s = Executors.newScheduledThreadPool(1);

??2.1  schedule方法该方法是重载的,这两个重载的方法都是有3个形参,只是第一个形参不同。
  • Runnable  /  Callable< V> 可以传入这两个类型的任务
  • long delay    时间数量
  • TimeUnit unit 时间单位
该方法的作用是让任务按照指定的时间延时执行
2.2  scheduleAtFixedRate方法该方法的作用是按照指定的时间延时执行,并且每隔一段时间再继续执行
  • Runnable command    执行的任务
  • long initialDelay          延时的时间数量
  • long period                  间隔的时间数量
  • TimeUnit unit              时间单位
倘若在执行任务的时候,耗时超过了间隔时间,则任务执行结束之后直接再次执行,而不是再等待间隔时间执行。
2.3  scheduleWithFixedDelay方法
该方法的作用是按照指定的时间延时执行,并且每隔一段时间再继续执行
  • Runnable command    执行的任务
  • long initialDelay          延时的时间数量
  • long period                  间隔的时间数量
  • TimeUnit unit              时间单位
在执行任务的时候,无论耗时多久,任务执行结束之后都会等待间隔时间之后再继续下次任务。

    推荐阅读