java实现多线程下载网络图片
首先呢先下载Apache提供的IO包
蓝奏云:https://wwm.lanzoum.com/ibmpZ0bkc6pa
这样就可以调用FIleUrils类。
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
/**
* @author Mxhlin
* @Email fuhua277@163.com
* @Date 2022/09/12/20:52
* @Version
* @Description 练习Thread,实现多线程下载图片
*/
public class ThreadTest2 extends Thread{
private String url;
private String name;
public ThreadTest2(String url,String name){
this.url = url;
this.name = name;
}
@Override
public void run() {
Downloader ca = new Downloader();
ca.downloaderMothod(url,name);
}
public static void main(String[] args) {
ThreadTest2 t1 = new ThreadTest2("https://tiebapic.baidu.com/forum/w%3D580%3B/sign=6f53832073d3d539c13d0fcb0abceb50/b90e7bec54e736d189972fd6de504fc2d462696c.jpg?tbpicau=2022-09-14-05_f937b0d23360cd3e2ac4e06ff6e1d0fa","1.jpg");
ThreadTest2 t2 = new ThreadTest2("https://tiebapic.baidu.com/forum/w%3D580%3B/sign=db312fef0f90f60304b09c4f0929b11b/a8ec8a13632762d0a6b00761e5ec08fa503dc666.jpg?tbpicau=2022-09-14-05_336b8fdeefc3fc01b0ff92df746f8d07","2.jpg");
ThreadTest2 t3 = new ThreadTest2("https://tiebapic.baidu.com/forum/w%3D580%3B/sign=d9406aedd745d688a302b2ac94f97f1e/4afbfbedab64034f624d61d8eac379310b551d6f.jpg?tbpicau=2022-09-14-05_e5d125e49993a48413a458bcc9629998","3.jpg");
t1.start();
t2.start();
t3.start();
}
}
// 下载器
class Downloader{
// 下载方法
public void downloaderMothod(String url,String name){
try {
FileUtils.copyURLToFile(new URL(url),new File(name));
} catch (IOException e) {
e.fillInStackTrace();
System.out.println("IO异常,downloaderMothod方法异常");
}
}
}
代码思路:
- 写好一个使用FileUtils类实现下载网上的图片
- 设置私有成员变量 rul / name
- 创建一个有参构造方法,因为用不到无参构造方法
- 继承Thrad类,重写run()方法
- 再main()方法里实例化线程类并写入rul和name的参数,name设置图片名称
- 调用start()方法开启线程