zoukankan      html  css  js  c++  java
  • java 多线程 day10 获取线程的返回值 CallableAndFuture


    import java.util.Random;
    import java.util.concurrent.*;

    /**
    * Created by chengtao on 17/12/4.
    *
    * 获取线程的结果
    * <T> Future<T> submit(Callable<T> task);
    */
    public class Thread1001_CallableAndFuture {
    public static void main(String[] args)throws Exception {
    // future01();
    // future02();
    future03();
    System.out.println("主线程 已经执行完了");
    }

    public static void future01() throws Exception{
    ExecutorService threadPool = Executors.newFixedThreadPool(5);
    Future<String> future =
    threadPool.submit(
    new Callable<String>() {
    public String call() throws Exception {
    Thread.sleep(2000);
    return "hello";
    };
    }
    );
    System.out.println("等待结果");
    System.out.println("拿到结果:" + future.get());
    }

    //设置 返回任务的时间
    public static void future02() throws Exception{
    ExecutorService threadPool = Executors.newSingleThreadExecutor();
    Future<Integer> future =
    threadPool.submit(
    new Callable<Integer>() {
    public Integer call() throws Exception {
    Thread.sleep(2000);
    return 5;
    };
    }
    );
    System.out.println("等待结果");
    System.out.println("拿到结果:" + future.get(1, TimeUnit.SECONDS));
    }

    //一次提交多个任务,哪个任务先执行完,就先返回哪个任务的结果
    public static void future03() throws Exception{

    ExecutorService threadPool2 = Executors.newFixedThreadPool(10);
    CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool2);
    for(int i=1;i<=10;i++){
    final int seq = i;
    completionService.submit(new Callable<Integer>() {
    public Integer call() throws Exception {
    int sleepNum = new Random().nextInt(5000);
    System.out.println("seq = " + seq + " sleep = " + sleepNum );
    Thread.sleep(sleepNum);
    return seq;
    }
    });
    }
    for(int i=0;i<10;i++){
    System.out.println( completionService.take().get());
    }
    }
    }
  • 相关阅读:
    python自动生成小学四则运算题目
    软件工程第一章心得体会
    Python微信机器人
    利用python进行微信好友分析
    python操作数据库读书笔记
    初学爬虫之访问goole网页与爬取中国大学排名。
    python之预测体育竞技分析
    5、用python写一个自己的网页
    用turtle实现动态汉诺塔
    面向对象与正则表达式的学习(自动更正,和代数运算)
  • 原文地址:https://www.cnblogs.com/ctaixw/p/7979737.html
Copyright © 2011-2022 走看看