美文网首页
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