多线程入门
来源:互联网 发布:手机淘宝社区首页 编辑:程序博客网 时间:2024/04/30 03:55
从学java到现在,还没有做过类似的多线程下载,如果只是看看书,就认为自己已经掌握了多线程的话,那就是自己欺骗自己,到现在我自己依然对多线程不怎么了解,所以就有了这篇文章,相当于入门吧,好了废话不多说。
一:我们先来认识认识这个类URL。
类 URL
代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询
更多信息请移步: http://www.socs.uts.edu.au/MosaicDocs-old/url-primer.html
首先,我们看看构造函数:
URL(String spec)
根据 String
表示形式创建 URL
对象。
这应该是比较常用的一个构造函数了,他的用法可以是这样:
URL url = new URL(path);
path:http://www.cqwu.edu.cn,可以是这样的。
好了,当我们拥有了URL对象后,我们再来看看URLConnection类。这个类的对象代表了与URL连接的远程对象。这个URLConnection类的一些方法:
getContentLength()
返回 content-length
头字段的值。(获取长度)
getConnectTimeout()
返回连接超时设置。
这里就看看我们需要用到的这两个方法,
如何获取这个URLConnectioon对象呢?
URL类有一个openConnection()方法,我们可以通过此方法获取。其中有很多我不是很理解的地方,待以后自己慢慢理解。
万事开头难,我们的第一步算是走出去了,接下来我们继续。
二:线程下载。
写一个线程类,我们可以有三种方式:
1、实现Runnable接口
2、继承父类Thread类
3、实现Callable接口
现在,我这里是继承父类Thread类
如:public class DownThreads extends Thread {}
在这里我们要重写父类Thread类的run()方法,在里面写上我们的线程要执行的内容,我们要实现的是多线程下载,所以我们还要把资源划分为几部分。现在我们的大致思路就是如此了。但是,我得承认这思路太简单了,光这个怎么能写出来呢?
接下来,我们再细细讲解。
二(1):现在我们想想,获取了连接对象,那怎么把我们所需要的资源给传到我们电脑本地磁盘呢?那我们就得谈谈I/O流了,不过这里不详细,可以自己到网上获 取相关资源。这里我们使用RandomAccessFile类:此类的实例支持对随机访问文件的读取和写入。还有一InputStream类。
这里我们的输入流对象可以通过URLConnection对象的getInputStream()方法获取。而RandomAccessFile类作为输出流。这两个类基本实现我们的需求。接下来我们需要讲解一下一些小的注意事项。
二(2):1、分清每一个线程的的开始下载位置,我们可以使用RandomAccessFile类的
seek(long pos) (设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作)
方法定位线程的下载的位置,
2、当我们分好了每个线程的下载任务,我们就需要注意,在读取的时候每个线程的开始读取的位置是不一样的,我们可以使用InputStream类的skip(long n)方法跳过不是线程自己的任务,跳到自己负责的那部分文件。
3、当我们写到本地磁盘的时候需要注意,在我们使用
write(byte[] b, int off, int len)
(将 len
个字节从指定 byte 数组写入到此文件,并从偏移量 off
处开始。)
应该注意每次写入的长度大小,
good luck!
- 多线程 入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程快速入门
- Java 多线程入门大全
- Java多线程程序设计入门
- Java多线程程序设计入门
- Java多线程入门
- Java多线程程序设计入门
- 自动获取类型的auto和decltype类型说明符
- CCF-CSP 201409-4 最优配餐(BFS)
- Java提高篇(三四)-----fail-fast机制
- SetContentView都做了什么
- Netty权威指南 第2版学习笔记11——实现WebSocket
- 多线程入门
- Android模拟登陆校园教务系统
- 兰顿蚂蚁
- 文章标题
- 我的软件工程课目标
- Homebrew简介及使用
- 直白的理解State模式
- CS231n课程笔记6.2:神经网络训练技巧之Ensemble、Dropout
- 如何阅读Android framework层源代码