//线程创建方式三,实现Callable接口
/**
* Callable的好处
* 1.可以定义返回值
* 2.可以抛出异常
*
*/
public class TestCallable implements Callable<Boolean> {
private String url; //网络图片地址
private String name; //保存的文件名
public TestCallable(String url,String name){
this.url = url;
this.name = name;
}
//描写重写run方法
//下载图片线程的执行体
@Override
public Boolean call() {
webDownloader webDownloader = new webDownloader ();
webDownloader.downdarerd (url,name);
//打印
System.out.println ("下载文件名为"+name);
return true;
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
//创建对象
TestCallable t1 = new TestCallable ("https://pic32.photophoto.cn/20140825/0005018319994720_b.jpg","1.jpg");
TestCallable t2 = new TestCallable ("https://img2.woyaogexing.com/2018/01/11/c9fbaa101c07e288!600x600.jpg","2.jpg");
TestCallable t3 = new TestCallable ("http://pic17.nipic.com/20111101/8726441_123115198198_2.jpg","3.jpg");
//创建执行服务
ExecutorService ser = Executors.newFixedThreadPool (3);
//提交执行
Future<Boolean> r1 = ser.submit (t1);
Future<Boolean> r2 = ser.submit (t2);
Future<Boolean> r3 = ser.submit (t3);
//获取结果
boolean rs1 = r1.get ();
boolean rs2 = r2.get ();
boolean rs3 = r3.get ();
//打印
System.out.println (rs1);
System.out.println (rs2);
System.out.println (rs3);
//关闭服务
ser.shutdownNow ();
}
}
//下载器
class webDownloader {
//下载方法
//FileUtils文件工具类
public void downdarerd(String url,String name){
try {
FileUtils.copyURLToFile (new URL (url), new File (name));
} catch (IOException e) {
e.printStackTrace ();
System.out.println ("IO异常,downdarerd方法出现问题");
}
}
}
实现Callable接口
最新推荐文章于 2022-11-15 18:06:36 发布