实现callable接口

image

package com.guo.demo02;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.net.URL;
import java.util.concurrent.*;

/**
 * 创建方式三: 实现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;
    }

    //下载图片的线程执行体
    @Override
    public Boolean call() {
        WebDownload webDownload = new WebDownload();
        webDownload.downloader(url,name);
        System.out.println("下载了文件名为:"+name);
        return true;
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        TestCallable t1 = new TestCallable("https://img-s.msn.cn/tenant/amp/entityid/AA1YWkc6.img?w=768&h=576&m=6&x=460&y=74&s=142&d=142","肖战.jpg");
        TestCallable t2 = new TestCallable("https://inews.gtimg.com/news_bt/Onn7Sa3wKTQqo3UDXI-iGSb4A8LxJvyVsCO4plkYWaF4QAA/641","杨幂.jpg");
        TestCallable t3 = new TestCallable("https://n.sinaimg.cn/sinakd10110/192/w1080h1512/20200701/ebaf-ivrxcex9280671.jpg","刘德华.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 WebDownload{
    //下载方法
    public void downloader(String url,String name){
        try {
            FileUtils.copyURLToFile(new URL(url),new File(name));
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("IO异常,downloader方法出现问题");
        }
    }
}
posted @ 2026-03-24 13:50  果子同志  阅读(10)  评论(0)    收藏  举报