文章持续更新(2020/2/3 疫情严重 照顾好自己)
创建线程的三种方式
1.继承Thread 类
2.实现Runnable 接口
3.实现Callable 接口
本次开篇先从继承Thread 类讲起
关于Thread主要要认识两个类 run() 和 start()
思路
1.创建:继承Thread,重写run
2.启动:创建子类对象+start
package 多线程基础;
//1.创建:继承Thread,重写run
//2.启动:创建子类对象+start
public class StratThread extends Thread{
//线程入口点
public void run() {//重写run方法
for (int i = 0; i <50; i++) {
System.out.println("一边code");
}
}
public static void main(String[] args) {
StratThread st =new StratThread();//创建子类对象
st.start();//启动 不保证立即运行 由cpu调用
for (int i = 0; i < 50; i++) {
System.out.println("一边听歌");
}
}
}
基于Thread的网页图片下载
运用到了Commons-io 工具类
下载工具
package 多线程基础;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.io.FileUtils;
public class WedLode {
public void download(String url, String name) {
try {
FileUtils.copyURLToFile(new URL(url), new File(name));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("网址有误");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("下载失败");
}
}
}
下载
package 多线程基础;
public class lode extends Thread {
private String url;
private String name;
public lode(String url, String name) {
this.url = url;
this.name = name;
};
public void run() {
WedLode st =new WedLode();
st.download(url, name);
}
public static void main(String[] args) {
lode down =new lode("http://img.netbian.com/file/2020/0201/ef20367cc4a93b52a5020b9dc0cf9df3.jpg", "桃花1.jpg");
lode down2 =new lode("http://img.netbian.com/file/2020/0201/b0ef1bdc2e80ef60d256f9a76dc6a818.jpg", "桃花2.jpg");
lode down3 =new lode("http://img.netbian.com/file/2020/0202/fdae5e7ca266207dc526411106df77e2.jpg", "湖面.jpg");
down.start();
down2.start();
down3.start();
}
}