Java教程

利用多线程同步进行图片下载

本文主要是介绍利用多线程同步进行图片下载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

利用多线程进行图片下载

第一步:首先需要创建一个项目包,在百度中下载commons-io-2.6.jar包,下载之后直接复制粘贴在创建的项目包当中,需要注意的是是commons的io包,不要弄错哟。:如下图所示:
1
第二步,直接选中该包名,鼠标右键,找到Add as Library并双击,将它加入到库里面。
2
这样我们就可以看到刚刚复制过来的jar包就可以看到下面的内容了。如下图所示:
4
在复制进去的时候是没有这个角标的。
还可以在项目资源目录中进行查看,如下图所示:
1
2
此时我们就可以看见lib目录了。
现在进行代码实现,在代码中主要分成两大部分来进行:
第一部分:定义一个下载器;
第二部分:定义主线程;
在定义的下载器中,首先进行对下载方法的定义,此时第哦啊用一个文件的工具类,使用该类来调用一个获取下载路径的方法,在这个方法中定义下载的路径以及文件名字,然后再抛出异常即可。
创建一个多线程,在多线程中定义属性,然后再定义一个主线程,在主线程中进行调用start方法来实现多图片的下载。
代码图示:
1
2
源码+注释:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;
//实现多线程同步下载图片
public class DownPictureTest01 extends Thread{
    private String url;//需要保存的网络图片地址
    private String name;//需要保存的图片名字
    public DownPictureTest01(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) {
        //找到需要下载的图片,传入图片路径,后面加上需要保存图片的名字
        DownPictureTest01 d1 = new DownPictureTest01("\thttps://img0.baidu.com/it/u=652105935,1787381361&fm=26&fmt=auto","小熊.jpg");//打开浏览器,找到需要下载的图片
        DownPictureTest01 d2 = new DownPictureTest01("https://img1.baidu.com/it/u=3292056143,2828698629&fm=26&fmt=auto","奥捷尔.jpg");//打开浏览器,找到需要下载的图片
        DownPictureTest01 d3 = new DownPictureTest01("\thttps://img0.baidu.com/it/u=1662784896,4221536175&fm=26&fmt=auto","泰迪熊.jpg");//打开浏览器,找到需要下载的图片
        DownPictureTest01 d4 = new DownPictureTest01("https://img1.baidu.com/it/u=2859814088,31507439&fm=26&fmt=auto","情侣熊.jpg");//打开浏览器,找到需要下载的图片
        //调用start执行对象中的实现功能
        d1.start();
        d2.start();
        d3.start();
        d4.start();


    }
}
//定义一个下载器
class WebDownloader{
    //下载方法
    public void downloader(String url,String name){
        try {
            FileUtils.copyURLToFile(new URL(url),new File(name));//调用了一个文件工具类,调用了一个复制文件地址的方法
        } catch (IOException e) {//在定义完成之后,使用try-chatch捕捉异常
            e.printStackTrace();
            System.out.println("IO出现异常,downloader方法存在问题!!!");
        }
    }
}

运行结果图示:
9

这篇关于利用多线程同步进行图片下载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!