zoukankan      html  css  js  c++  java
  • 线程池

    //线程的数量
    private static final int UPD_NO_THREADS = 5;
    //线程池的容量
    private ExecutorService executorService = Executors.newFixedThreadPool(UPD_NO_THREADS);

    public void runExecutorService(){
    List<Callable<Object>> todo = new ArrayList<Callable<Object>>(UPD_NO_THREADS);
    //接口Callable<V> 返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。
    //Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。
    executorService = Executors.newFixedThreadPool(UPD_NO_THREADS);
    while(x>0){
    for(int x=0;x<100;x++){
    //AService是一个实现Runnable接口的类
    todo.add(Executors.callable(new AService(y)));
    }
    //Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。
    //取消则由 cancel 方法来执行。还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能再取消计算。如果为了可取消性而使用 Future 但又不提供可用的结果,则可以声明 Future<?> 形式类型、并返回 null 作为底层任务的结果。
              List<Future<Object>> result = executorService.invokeAll(todo);
    // invokeAll(Collection<? extends Callable<T>>tasks)执行给定的任务,当所有任务完成时,返回保持任务状态和结果的 Future 列表。
    todo.clear();
    }
    executorService.shutdown();
    }


    ExecutorService的submit(runnable)返回Future对象







  • 相关阅读:
    设计模式之-简单工厂模式
    C# 汉语转拼音
    深入理解DIP、IoC、DI以及IoC容器
    C# 各种帮助类大全
    C# TCP多线程服务器示例
    【AtCoder】AGC004
    【AtCoder】ARC061
    【AtCoder】CODE FESTIVAL 2016 qual A
    【AtCoder】AGC005
    【AtCoder】CODE FESTIVAL 2016 qual B
  • 原文地址:https://www.cnblogs.com/sam-cheng/p/6477719.html
Copyright © 2011-2022 走看看