zoukankan      html  css  js  c++  java
  • 【Java并发核心四】Executor 与 ThreadPoolExecutor

    Executor ThreadPoolExecutor 实现的是线程池,主要作用是支持高并发的访问处理。

    Executor 是一个接口,与线程池有关的大部分类都实现了此接口。

    ExecutorService 是 Executor 的子接口;AbstractExecutorService 是 ExecutorService 的实现类,但是是抽象类。

    ThreadPoolExecutor 是 AbstractExecutorService 的子类,可实例化。

    Executors 是一个工厂类,用于创建线程池。

    1、Executors 的 使用:

      (1) newCachedThreadPool()  返回 ExecutorService 实例,创建无界限线程池,理论上线程最大个数是 Integer.MAX_VALUE,使用举例:

         final SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
            ExecutorService executorService = Executors.newCachedThreadPool();
            // 此线程池运行5个线程
            for (int i = 0; i < 5; i++) {
                final int index = i;
                executorService.execute(new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("Thread-" + index + "-begin-" + sf.format(new Date()));
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println("Thread-" + index + "-end-" + sf.format(new Date()));
                    }
                });
            }

      运行结果:

      

      从上图可以看出,线程在execute 加载后,基本是并发执行的,并非顺序执行。

      (2) newFixedThreadPool(int)  返回 ExecutorService 实例,创建的是有界线线程池,即线程个数可以指定最大数量,如果超过最大数量,则后加入的线程需要等待。

        还有api:newFixedThreadPool(int , ThreadFactory),newCachedThreadPool( ThreadFactory ) 方法同理。

      (3) newSingleThreadExecutor() 创建单一线程池,实现以队列的方式来执行任务。

     2、ThreadPoolExecutor 的使用:

      Executors 工厂类中,很多地方是调用的 ThreadPoolExecutor 来实现的,单独调用 ThreadPoolExecutor 要考虑的相对要多一些但也更灵活。

  • 相关阅读:
    在vs2008中集成JavaScript Lint检查JavaScript语法
    (转载)SQL分页语句
    设置出错页
    判断2个输入框至少输入1个
    C#获取用户桌面等特殊系统路径
    创建存储过程的代码
    SqlParameter关于Like的传参数无效问题
    (转)利用Office里面的OWC组件进行画图
    firefox3不能获得html file的全路径的问题
    (转)使用ASP.NET上传图片汇总
  • 原文地址:https://www.cnblogs.com/klbc/p/9789985.html
Copyright © 2011-2022 走看看