package com.annan.demo01;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.*;
//线程创建方式三:实现callable接口
//好处:1.可以定义返回值 2.可以抛出异常
public class TestCallable implements Callable {
private String url;
private String name;
public TestCallable(String url,String name){
this.name=name;
this.url=url;
}
public Boolean call() throws Exception {
WebDownLoader2 webDownLoader2 = new WebDownLoader2();
webDownLoader2.downloader(url,name);
System.out.println("下载了文件名为:"+name);
return true;
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
TestCallable t1 = new TestCallable("https://exp-picture.cdn.bcebos.com/8a17b3042e6817e972512d4dd356d53da924ce04.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_jpg%2Fquality%2Cq_80","1.jpg");
TestCallable t2 = new TestCallable("https://exp-picture.cdn.bcebos.com/a68c126efbf202b36d67bace30f4da5873dadb04.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_jpg%2Fquality%2Cq_80","2.jpg");
TestCallable t3 = new TestCallable("https://exp-picture.cdn.bcebos.com/955ea0e434daf05e44935ac4751d96d81919e504.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_jpg%2Fquality%2Cq_80","3.jpg");
//创建执行服务
ExecutorService executorService = Executors.newFixedThreadPool(3);
//提交执行
Future<Boolean> r1 = executorService.submit(t1);
Future<Boolean> r2 = executorService.submit(t1);
Future<Boolean> r3 = executorService.submit(t1);
//获取结果
Boolean rs1 = r1.get();
Boolean rs2 = r2.get();
Boolean rs3 = r3.get();
//关闭服务
executorService.shutdown();
}
}
class WebDownLoader2 {
//下载方法
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出现问题");
}
}
}
09-04
143

11-12
1338

03-18
2259
