import com.defend.demo01.TestTread;
import com.defend.demo01.WebDownLoader;
import java.util.concurrent.*;
/**
* zuow
* 多线程之Callable
* 实现网络图片下载
* 测试不成功,记录一下
*/
public class TestCallable implements Callable<Boolean> {
//网络图片地址
private String url;
//保存的文件名
private String name;
public TestCallable(String url,String name){
this.url = url;
this.name = name;
}
//下载执行体
@Override
public Boolean call() {
WebDownLoader webDownLoader = new WebDownLoader();
webDownLoader.downLoader(url,name);
System.out.println("下载的文件名为"+name);
return true;
}
public static void main(String[] args) {
TestTread testTread1 = new TestTread("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1595930373018&di=7da1188096ceb5201ef508ea00079f78&imgtype=0&src=http%3A%2F%2Fa2.att.hudong.com%2F36%2F48%2F19300001357258133412489354717.jpg", "name1.jpg");
TestTread testTread2 = new TestTread("https://img-blog.csdnimg.cn/20200727213903548.png", "name2.png");
TestTread testTread3 = new TestTread("https://img-blog.csdnimg.cn/20200727214012993.png", "name3.png");
//开启一个服务的池子
ExecutorService ser = Executors.newFixedThreadPool(3);
//提交执行结果
Future<?> result1 = ser.submit(testTread1);
Future<?> result2 = ser.submit(testTread2);
Future<?> result3 = ser.submit(testTread3);
System.out.println("测试使用"+result1);
try {
Object r1 = result1.get();
Object r2 = result2.get();
Object r3 = result3.get();
System.out.println(r1);
System.out.println(r2);
System.out.println(r3);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
//关闭服务
ser.shutdownNow();
}
}