多线程断点续传原理
断点续传的实现? 断点续存类似于游戏里的存档 ( 1 ) 如果游戏不能存档,那么则意味着我们下次游戏的时候,这次已经通过的4关的进度将会丢失,无法接档。 ( 2 ) 如果游戏不能存档,那么则意味着我们下次游戏的时候,这次已经通过的4关的进度将会丢失,无法接档。 “断点续传”最最基础的原理: 我们要在下载行为出现中断的时候,记录下中断的位置信息,然后在下次行为中读取。 在新的下载行为开始的时候,直接从记录的这个位置开始下载内容,而不再从头开始。 (1)当“上传(下载)的行为”出现中断,我们需要记录本次上传(下载)的位置(position)。 (2)当“续”这一行为开始,我们直接跳转到postion处继续上传(下载)的行为。 回归二进制,因为这里的本质无非就是文件的读写。 (1)那么剩下的工作就很简单了,先是记录position,这似乎都没什么值得说的,因为只是数据的持久化而已(内存,文件,数据库),我们有很多方式。 (2)另一个关键在于当“续传”的行为开始,我们需要需要从上次记录的position位置开始读写操作,所以我们需要一个类似于“指针”功能的东西。 我们当然也可以自己想办法去实现这样一个“指针”,但高兴地是,Java已经为我们提供了这样的一个类,那就是 RandomAccessFile 。 这个类的功能从名字就很直观的体现了,能够随机的去访问文件