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

Posted link可

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#私藏项目实操分享#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

在该类中提供了一些方法可以帮助开发者实现间隔执行的效果,下面列出一些常见的方法及其参数说明。我们可以通过下面方式来获取该类的对象,其中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       时间单位

在执行任务的时候,无论耗时多久,任务执行结束之后都会等待间隔时间之后再继续下次任务。

以上是关于#私藏项目实操分享#Java多线程下载器基础代码的主要内容,如果未能解决你的问题,请参考以下文章

#私藏项目实操分享# Java实现基于朴素贝叶斯的情感词分析

#私藏项目实操分享# Java代码优化-请求合并与分而治之

Docker基础:安装RabbitMQ服务 #私藏项目实操分享#

Docker基础:安装Redis Cluster服务 #私藏项目实操分享#

一文了解 Python 中的迭代器 #私藏项目实操分享#

#私藏项目实操分享# Angular @HostListener 装饰器的使用笔记