利用多线程完成同步下载图片

代码展示:

package thread;

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;//导入包

public class Thread2 extends Thread {//继承Thread类
    private String url;
    private String name;
    public Thread2(String url,String name){//重写构造方法
        this.url = url;
        this.name = name;

    }

    @Override
    public void run() {//重写run方法
        Webdownloader webdownloader = new Webdownloader();
        webdownloader.downloader(url,name);
        System.out.println("下载了文件名为:"+name);
    }

    public static void main(String[] args) {
        Thread2 t1 = new Thread2("https://img-blog.csdnimg.cn/img_convert/829c27c78c57ad1d5c34964692b41692.png","1.jpg");
        Thread2 t2 = new Thread2("https://img-blog.csdnimg.cn/img_convert/34eae842781dbd31a9c5244fd70010f4.png","2.jpg");
        Thread2 t3 = new Thread2("https://img-blog.csdnimg.cn/img_convert/84e35964fbbc66dae155cbff34464a9a.png","3.jpg");
        t1.start();
        t2.start();
        t3.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方法出现问题");
        }
    }
}

实现步骤:

  1. 百度下载commons-io包,解压后导入idea
  2. 创建一个内部类,写一个下载方法webdownloader,这个方法可能会出现Io异常,利用trycatch语句监控捕获异常,
  3. 外部类继承Thead类,声明两个私有变量url和name,定义一个带参数的构造器,把形参指向实际的私有变量参数url和name
  4. 重写run方法,把内部类webdownloader实例化,并且调用这个内部类的下载方法downloader,为了显示下载结果,写一个输出语句用来提示
  5. 在main方法里面把该外部类实例化,构造参数里面写上图片的网络地址和下载后的保存名
  6. 调用父类thread类的Start方法,开启多线程下载
  7. 实验完毕可以看到程序执行完毕后的输出结果并不是按1,2,3这样的顺序下载完成,这是cpu负责调度的
posted @   萧何i  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示