大家好,分享一下使用thread 实现多线程同步下载图片
首先,你要有这个包:
这个的话,
直接在csdn上搜索即可
你会看见很多人上传的文件分享链接
点击Add as Liarbry 这个选项
这样就可以看见文件里边的东西了
获取网页上的图片链接:
然后我们来敲一下源码:
package Demo02;
import org.apache.commons.io.FileUtils;
import javax.imageio.IIOException;
import java.io.File;
import java.io.IOException;
import java.net.URL;
public class ThreadTest extends Thread {
private String url; //保存网络图片地址
private String name; // 保存的文件名
public ThreadTest(String url, String name) {
this.url = url;
this.name = name;
}
@Override
public void run() {
WebDownloader webDownloader = new WebDownloader(); //定义对象
webDownloader.downloader(url, name);
System.out.println("下载之后文件名是:" + name);
}
//这里需要图片的原地址
public static void main(String[] args) {
ThreadTest k1 = new ThreadTest("https://img-home.csdnimg.cn/images/20220218094038.jpg ", "1.jpg");
ThreadTest k2 = new ThreadTest("https://img-home.csdnimg.cn/images/20220218094038.jpg ", "2.jpg");
ThreadTest k3 = new ThreadTest("https://img-home.csdnimg.cn/images/20220218094038.jpg ", "3.jpg");
k1.start(); //开启线程
k2.start(); //开启线程
k3.start(); //开启线程
}
}
class WebDownloader{ //定义下载器
public void downloader(String url,String name){
try {
FileUtils.copyURLToFile (new URL(url),new File(name));
} catch (IOException e) {
e.printStackTrace();
System.out.println("io异常,downloader方法异常"); //文件下载失败
}
}
}
执行结果:
看文件:(截图)
这样就成功了:
同时还要注意:
k1.start(); //开启线程
k2.start(); //开启线程
k3.start(); //开启线程
这个每一次下载下来的顺序不一定相同
因为它们是同时加载的(网速不一定)
使用thread 实现多线程同步下载图片到这里就成功了,谢谢大家