首页 > 编程语言 > 详细

Callable和Future实现多线程

时间:2016-07-06 18:40:40      阅读:271      评论:0      收藏:0      [点我收藏+]


Callable和Future实现多线程


  

      Future取得的结构类型和Callable返回的结果类型必须一致。

      Callable要采用ExecutorServicesubmit方法提交,返回的future对象可以取消任务


        1.提交任务,得到任务的返回结果举例

        ExecutorService threadPool = Executors.newSingleThreadExecutor();

        Future<String> future = threadPool.submit(new Callable<String>() {

        @Override

        public String call() throws Exception {

        // TODO Auto-generated method stub

        return "hello";

        }

        });

    future.get();

    2.CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的

      Future对象。就是一件事让多个线程去执行,谁先执行完,就取得谁的结果。例子如下:

      ExecutorService threadPool2 = Executors.newFixedThreadPool(10);

      CompletionService<String> completionService = new ExecutorCompletionService<String>

                                                        (threadPool2);

        for (int i = 0; i < 10; i++) {

        completionService.submit(new Callable<String>() {

        @Override

        public String call() throws Exception {

        return "hello";

        }

        });

        }

    

        for (int i = 0; i < 10; i++) {

        completionService.take().get();

        }

      





本文出自 “德泽无忧” 博客,谢绝转载!

Callable和Future实现多线程

原文:http://dezewuyou.blog.51cto.com/2628602/1803515

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!