学习通过多线程同时下载多张图片简单实例笔记
废话不多说,首先先温习一下多线程
我这里继承实现用的是Thread类,不推荐使用
推荐小伙伴们看后自己动手修改成继承runnable接口
`
创建线程方式:1.继承thread类,重现run方法,调用start开启线程
总结:线程得开启不一定立即执行
线程不一定立即执行,cpu安排调度
下载commons-io 2.6jar 包,在网上一搜就有
然后add as library
//实现多线程同步下载图片
public class TestThread2 extends Thread{
private String url;//网络图片地址
private String name;//保存得文件名
public TestThread2(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) {
TestThread2 t1=new TestTgread2("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3363295869,2467511306&fm=26&gp=0.jpg","1.jpg");
TestThread2 t2=new TestTgread2("https://ss0.baidu.com/7Po3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/9c16fdfaaf51f3de9ba8ee1194eef01f3a2979a8.jpg","2.jpg");
TestThread2 t3=new TestTgread2("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2853553659,1775735885&fm=26&gp=0.jpg","3.jpg");
t1.start();
t2.start();
t3.start();
}
}
//下载器
class WebDownloader{
//下载方法
public void downloader(String url,String name){
try {
//FileUtils在common-io jar包中,可以网上找一下
FileUtils.copyURLToFile(new URL(url),new File(name));
} catch (IOException e) {
e.printStackTrace();
System.out.println("IO异常,downloader方法异常");
}
}
}
运行后简单效果
当然控制台中第一行可能是下载文件名:2.jpg或是3.jpg
因为他们是同时进行得,现下载完成哪个哪个就会先显示