8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

当一个未来任务在Java中完成后停止

PriceOne 2月前

19 0

我有 2 个 FutureTask 对象。我的任务正在并行运行。但是,我想要的是,只要其中一个 FutureTask 方法完成其执行/作业,另一个就应该停止。但是在方法内部(

我有 2 个 FutureTask 对象。我的任务正在并行运行。但是,我想要的是,只要其中一个 FutureTask 方法完成其执行/作业,另一个就应该停止。但是在方法(method1() /method2())中,我该如何停止呢?

public class Main {
    public static void main(String[] args) {
        try {
            ExecutorService executor = Executors.newSingleThreadExecutor();
            
            //task 1
            Future future1 = executor.submit(new Callable() {
                @Override
                public Response call() throws Exception {
                    return method1();
                }
            });
            //task 2
            Future future2 = executor.submit(new Callable() {
                @Override
                public Response call() throws Exception {
                    return method2();
                }
            });
            Response response1 = (Response) future1.get();
            Response response2 = (Response)future2.get();
            executor.shutdown();
            if(response1!=null || response2.getMsg()!=null){
                System.out.println(response2.getMsg());
            }else{
                System.out.println("error");

            }
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }

    //first method
    private static Response method1() {
        Response response=new Response();
        response.setMsg("test1"); //  ==> this might take long time
        return response;
    }
    //second method
    private static Response method2() {
        Response response=new Response();
        response.setMsg("test1"); //  ==> this might take long time
        return response;
    }

}

class Response {
    String msg;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

有人能帮助我理解这一点吗?

帖子版权声明 1、本帖标题:当一个未来任务在Java中完成后停止
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由PriceOne在本站《java》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: