package com.ljy.test; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.net.URL; import java.util.concurrent.*; public class TestDownLoader1 implements Callable<Boolean> { private String url; private String name; public TestDownLoader1(String url,String name){ this.url=url; this.name=name; } @Override public Boolean call() throws Exception { Downloader downloader = new Downloader(); downloader.download(url,name); System.out.println("文件名为:"+name); return true; } class Downloader{ public void download(String url,String name){ try { FileUtils.copyURLToFile(new URL(url),new File(name)); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { TestDownLoader1 t1 = new TestDownLoader1("https://img2.baidu.com/it/u=1975709945,2357807807&fm=253&fmt=auto&app=138&f=JPEG?w=499&h=332", "11.jpg"); TestDownLoader1 t2 = new TestDownLoader1("https://img2.baidu.com/it/u=3340436266,2054185400&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=418", "22.jpg"); TestDownLoader1 t3 = new TestDownLoader1("https://img2.baidu.com/it/u=2144825314,638245739&fm=253&fmt=auto&app=138&f=JPEG?w=499&h=281", "33.jpg"); //创建线程池服务 ExecutorService executorService = Executors.newFixedThreadPool(3); //提交执行 Future<Boolean> submit1 = executorService.submit(t1); Future<Boolean> submit2 = executorService.submit(t2); Future<Boolean> submit3 = executorService.submit(t3); //获取结果 boolean rs1 = false; try { rs1 = submit1.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } boolean rs2 = false; try { rs2 = submit2.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } boolean rs3 = false; try { rs3 = submit3.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } //打印返回值 System.out.println(rs1); System.out.println(rs2); System.out.println(rs3); //关闭服务 executorService.shutdownNow(); } }