多线程-实现Callable接口-修改下载图片的案例
1.实现callable接口,需要返回值类型 2.重写call方法,需要抛出异常 3.创建目标对象 4.创建执行服务:ExecutorService ser=Exectutors.newFixedThreadPool(); 5.提交执行:Future<Boolean> result1=ser.submit(t1); 6.获取结果:boolean r1=result1.get(); 7.关闭服务:ser.shutdownNow();
package Threads; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import java.net.URL; import java.util.concurrent.*; //线程创建方式三,实现Callable /* Callable好处: 1.可以定义返回值 2.可以抛出异常 */ public class Main implements Callable<Boolean> {//要有返回值类型 //创建变量 private String url; private String name; public Main(){} public Main(String url,String name){ this.url=url; this.name=name; } //线程体:下载图片线程的执行体 public Boolean call(){ WebDownloader webDownloader=new WebDownloader();//创建下载器对象 //调用下载器中的方法 webDownloader.downloader(url,name); System.out.println("下载了文件名为:"+name); return true;//无论怎么样,我们执行这就方法,返回一个真 } public static void main(String []args) throws ExecutionException, InterruptedException { Main t1=new Main("https://img01.sogoucdn.com/app/a/100520021/3b453574cfbfd216bc9e22b7aedb75a3","1.jpg"); Main t2=new Main("https://img01.sogoucdn.com/app/a/100520021/3b453574cfbfd216bc9e22b7aedb75a3","2.jpg"); Main t3=new Main("https://img01.sogoucdn.com/app/a/100520021/3b453574cfbfd216bc9e22b7aedb75a3","3.jpg"); //创建执行服务:Exectutors ExecutorService ser= Executors.newFixedThreadPool(3);//创建3个池子 //把线程,提交执行: Future<Boolean> result1=ser.submit(t1); Future<Boolean> result2=ser.submit(t2); Future<Boolean> result3=ser.submit(t3); //获取结果:会有异常抛出就行 boolean r1=result1.get(); boolean r2=result2.get(); boolean r3=result3.get(); //打印返回值 System.out.println(r1); System.out.println(r2); System.out.println(r3); //关闭服务: ser.shutdownNow(); } } //下载器 class WebDownloader{ //下载方法 public void downloader(String url,String name){ try{ //copyURLToFile:把网上的文件地址,变成一个文件,new URL(url):添加一个网络路径,new File(name):添加一个文件路径 FileUtils.copyURLToFile(new URL(url),new File(name)); }catch(IOException e){ e.printStackTrace(); System.out.println("IO异常,downloader出现问题"); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端