zoukankan      html  css  js  c++  java
  • Java通过开启线程池实现多线程

    计算1..100  和1...200 的和,使用线程池开启两个线程 

    调用Executors类的newFixedThreadPool方法参数是线程池容纳的线程数量 这里是2 返回的对象是 ExecutorService类型

    用返回的对象 调用submit方法,传入的参数可以是 实现接口类 Runnable  或者是 Callable<数据类型>

    泛型里约束的 数据类型,是Callable实现类的重写方法 call方法的 返回值,通过这个返回值可以将运算的结果 返回输出

    传入的实现类对象,返回值是一个 Featrue类的对象该类的泛型约束的数据类型和 实现类的泛型约束的数据格式一致

    用该类的对象调用get方法即可获得所需要的计算结果返回值。

    package demo06;
    
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    
    /*
     * 使用多线程技术,求和
     * 两个线程,1个线程计算1..100和,另一个线程计算1..200的和
     * 多线程的异步计算
     */
    public class ThreadPoolDemo {
        public static void main(String[] args) throws InterruptedException, ExecutionException {
            ExecutorService es=Executors.newFixedThreadPool(2);
            Future<Integer> f1=es.submit(new GetSumCallable(100));
            Future<Integer> f2=es.submit(new GetSumCallable(200));
            System.out.println(f1.get());
            System.out.println(f2.get());
            es.shutdown(); //销毁线程池,程序结束。不做这一步,程序将永久保持运行状态,资源得不到释放
        }
    }
    package demo06;
    
    import java.util.concurrent.Callable;
    
    public class GetSumCallable implements Callable<Integer> {
        private int a;
        public GetSumCallable(int a){
            this.a=a;
        }
        public Integer call(){
            int sum=0;
            for(int i=1;i<=a;i++){
                sum+=i;
            }
            
            return sum;
        }
    }

  • 相关阅读:
    python Flask JQuery使用说明
    sqlserve 数据类型具体解释
    赵雅智_ListView_SimpleAdapter
    HDU 1018 Big Number (log函数求数的位数)
    cocos2d函数
    BZOJ 3514 Codechef MARCH14 GERALD07加强版 Link-Cut-Tree+划分树
    QQ好友列表数据模型封装
    【Codeforces】512C Fox and Dinner
    spring中操作mysql数据库
    【读书笔记】iOS-Xcode-模拟器操作的一些快捷键
  • 原文地址:https://www.cnblogs.com/benjamin77/p/9132768.html
Copyright © 2011-2022 走看看