天天看点

通过多线程同时下载多张图片简单实例笔记学习通过多线程同时下载多张图片简单实例笔记

学习通过多线程同时下载多张图片简单实例笔记

废话不多说,首先先温习一下多线程

我这里继承实现用的是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

因为他们是同时进行得,现下载完成哪个哪个就会先显示

通过多线程同时下载多张图片简单实例笔记学习通过多线程同时下载多张图片简单实例笔记