美文网首页
FutureTask与线程池的应用

FutureTask与线程池的应用

作者: 小超人爱小土豆 | 来源:发表于2018-11-08 16:55 被阅读23次

需求背景:第三方请求服务后,异步处理请求,先返回请求方请求成功,后开启线程执行task并获取执行后的结果。故选用FutureTask来解决。

注意:定义调用方法的时候,定义call方法中需要的入参时,调用方法的形参是要定义成final类型的。

public class FutureTaskAndThreadPoolExecuteTest {
    public static void main(String[] args) throws Exception {
        function("bxq");
    }
    
    public static String function(final String ss) throws Exception{

        FutureTask<String> futureTask = new FutureTask<String>(new Callable<String>() {

            @Override
            public String call() throws Exception {
                System.out.println("do something in callable!");
                Thread.sleep(5000);
                return ss;
            }
        });
        ExecutorService executorService = Executors.newCachedThreadPool();
        executorService.submit(futureTask);
        System.out.println("do something in main!");
        Thread.sleep(1000);
        String s = futureTask.get();
        System.out.println("result:"+s);
        return s;
    
    }

}

相关文章

网友评论

      本文标题:FutureTask与线程池的应用

      本文链接:https://www.haomeiwen.com/subject/xqwwxqtx.html