利用多线程完成同步下载图片
代码展示:
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方法出现问题");
}
}
}
实现步骤:
- 百度下载commons-io包,解压后导入idea
- 创建一个内部类,写一个下载方法webdownloader,这个方法可能会出现Io异常,利用trycatch语句监控捕获异常,
- 外部类继承Thead类,声明两个私有变量url和name,定义一个带参数的构造器,把形参指向实际的私有变量参数url和name
- 重写run方法,把内部类webdownloader实例化,并且调用这个内部类的下载方法downloader,为了显示下载结果,写一个输出语句用来提示
- 在main方法里面把该外部类实例化,构造参数里面写上图片的网络地址和下载后的保存名
- 调用父类thread类的Start方法,开启多线程下载
- 实验完毕可以看到程序执行完毕后的输出结果并不是按1,2,3这样的顺序下载完成,这是cpu负责调度的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!