通过继承Thread
类。
步骤
- 自定义线程类继承
Thread
类 - 重写
run()
方法,编写线程执行体 - 创建线程对象,调用
start()
方法启动线程(线程不一定立即执行,CPU安排调度)
代码演示
步骤一
自定义线程类继承Thread
类
1 |
public class TestThread1 extends Thread { |
步骤二
重写run()
方法,编写线程执行体
1 |
public class TestThread1 extends Thread { |
步骤三
创建线程对象,调用start()
方法启动线程
1 |
public class Test { |
测试
通过观察程序运行的结果,我们发现并不是Hello World!
打印完之后才执行main方法里的for循环,这是因为使用了多线程技术,一个程序的进程中的每个线程都是有一定的时间片轮流执行的。需要注意的是调用start()方法后线程不一定是立即执行,而是由CPU安排调度。
1 |
... |
扩展
使用Apache基金会创建并维护的一个Java函数库–commons io
包,结合多线程技术同时下载多个文件。jar包下载地址:传送门。
在Java项目里新建一个包,我起的名字叫lib
(library)。jar包下载好之后解压缩,将里边的commons-io-2.7.jar
(我下载的版本是2.7的)文件拷贝到刚刚建立的包里。鼠标选择刚刚建立的包包,点击鼠标右键选择添加为库(Add
as Library…)。
下载工具编写
创建一个下载类。命名为webDownloader。
创建对象时,提供 网络资源URL、文件保存路径、文件名(带后缀),调用start()方法使用 多线程 进行文件下载。可以只提供 网络资源URL、文件保存路径两个参数,文件名会根据URL进行自动命名(包括后缀最多20字符)。(改进:传送门)
1 |
class webDownloader extends Thread{ |
测试
编写测试类:
1 |
public class TestThread2{ |
运行结果:
1 |
b864f71658f88_th.jpg开始下载。。。 |
学习自B站遇见狂神说