• 使用线程池,并发计算1~50、51~100的和,再进⾏汇总统计。


    知识点:获取线程池、提交任务、获取返回值

     

    获取线程池的几种方式:

    newFixedThreadPool(int nThreads) 获取固定数量的线程池。参数:指定线程池中线程的数量。(使用这种)

    newCachedThreadPool() 获得动态数量的线程池,如不够则创建新的,⽆上限。

    newSingleThreadExecutor() 创建单个线程的线程池,只有⼀个线程。

    newScheduledThreadPool() 创建固定⼤⼩的线程池,可以延迟或定时执⾏任务。

     

    Callable:jdk1.5之后可以使用Callable来实现线程,这个类的call方法具有泛型返回值、可以声明异常。

    Runnable接⼝和Callable接⼝的区别:

    Callable接⼝中call⽅法有返回值,Runnable接⼝中run⽅法没有返回值。

    Callable接⼝中call⽅法有声明异常,Runnable接⼝中run⽅法没有异常。

     

    Future接⼝表示将要执⾏完任务的结果。 get()以阻塞形式等待Future中的异步处理结果(call()的返回值)。

     

    案例1:使⽤两个线程,并发计算1~50、51~100的和,再进⾏汇总统计。

    复制代码
    public class TestFuture2 {
        public static void main(String[] args) throws Exception{
            //1创建线程池
            ExecutorService es= Executors.newFixedThreadPool(2);
            //2提交任务
            Future future1=es.submit(new Callable() {
                @Override
                public Integer call() throws Exception {
                    int sum=0;
                    for(int i=1;i<=50;i++) {
                        sum+=i;
                    }
                    System.out.println("1-50计算完毕");
                    return sum;
                }
            });
    
            Future future2=es.submit(new Callable() {
                @Override
                public Integer call() throws Exception {
                    int sum=0;
                    for(int i=51;i<=100;i++) {
                        sum+=i;
                    }
                    System.out.println("51-100计算完毕");
                    return sum;
                }
            });
            //3获取结果
            int sum=future1.get()+future2.get();
            System.out.println("结果是:"+sum);
            //4关闭线程池
            es.shutdown();
        }
    }
    复制代码

     

  • 相关阅读:
    婴儿摇椅出口亚马逊欧盟CE认证检测标准
    【UVA No. 442】 矩阵链乘 Matrix Chain Multiplication
    Feign远程调用fallback回调失败,无效果
    【Axure高保真原型】桥梁监控大屏可视化案例
    树查找(暑假每日一题 18)
    Linux防火墙实现SNAT与DNAT
    PID (Process ID) 和 thread_id (Thread ID) 的区别
    LeetCode(算法)- 343. 整数拆分
    SBT 树原理和实战
    视频剪辑教程:批量修改视频尺寸的简单方法
  • 原文地址:https://www.cnblogs.com/huangruiwu/p/16610223.html