深入理解线程与进程:基础知识、下载技巧及多线程下载与断点续传方法

Java--利用多线程下载和断点续传技术原理(RandomAccessFile)

深入理解线程与进程:基础知识、下载技巧及多线程下载与断点续传方法

一、基础知识 1、什么是线程?什么是流程?他们之间是什么关系?

可以参考之前的一篇文章:Java核心知识点学习-并发与并行的区别、进程与线程的区别、如何创建线程以及线程的四种状态、什么是线程定时器

简单来说,一个进程可以由多个线程组成,一个操作系统可以有多个进程,并且它们都可以同时工作。

2.什么是下载?如何使用多线程下载?如何断点续传?

广义上讲,您在屏幕上看到的任何不属于您本地计算机的内容都是通过“下载”获得的。狭义上,人们只将自定义下载文件本地磁盘存储位置的操作视为“下载”;

WEB下载方式分为两种:HTTP和FTP。它们分别是超文本传输​​协议和文件传输协议的缩写。它们是计算机之间交换数据的两种方式。最经典的下载方式,这种下载方式的原理很简单,就是用户通过两条规则(协议)与提供文件的服务器取得联系,将文件移动到自己的电脑上,从而实现下载功能。

多线程下载是指一个文件可以通过多个线程下载;而断点续传的传说是,当一个文件下载到一半时,由于某种原因,下载突然中断,比如电脑突然关机,那么当再次开机时,已经下载到一半的文件就不需要启动了结束,但继续下载;原理很简单:首先,当下载中断时,记住上次下载的位置,然后从这个位置继续下载。这种持续下载可以手动完成。程序运行时还可以自动识别并下载触发器。

3.什么是随机访问文件?

RandomAccessFile 的唯一父类是 Object,与其他流父类不同。它用于访问保存数据记录的文件,以便您可以使用seek()方法来访问记录并对其进行读写。这些记录的大小不必相同;但是,必须知道它们的大小和位置。

RandomAccessFile 的工作原理是将 DataInputStream 和 DataOutputStream 粘合在一起,再加上它自己的一些方法,例如用于定位的 getFilePointer()、用于在文件中移动的eek() 以及用于确定文件大小的 length()。另外,它的构造函数还有一个参数,指示是以只读模式(“r”)还是读写模式(“rw”)打开文件(与C的fopen()完全相同)。它不支持只写文件。从这一点来看,如果RandomAccessFile继承DataInputStream,可能会做得更好。

因此,本例中使用RandomAccessFile的seek来记住上次访问记录,然后从上次访问继续下载。

RandomAccess字面意思就是随机访问。这种理解很容易造成混乱。既然是随机的,那我们如何控制进度呢?

表示“随机”一词:

random
[ 'rændəm ]
adj. 随意的,任意,随机的,随机挑选的,任意随机的,胡乱任意的,随机性,任意的,胡乱的,随便的;(话等)信口乱说的;(人等)偶然碰到的,随意选择的,随便,无关紧要的,漫不经心的

可以看到它也有任意的意思,也就是说可以访问文件的任意位置,这就解释了为什么可以断点续传。

2、方案实施

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

25阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

25阅读