【多线程】——Executor框架

原创 2016年08月31日 16:03:47

Executor框架的作用:




     画了张简易的图供大家理解,首先我们将多个任务交给Executor去处理,Executor会将这些任务放到线程池


中,让线程去执行所分配的任务,然后去调度CPU进行执行操作。


Executor框架的结构:






            一张图胜过千言万语~图中就是Executor具体的成员。



在Executor框架中,线程池起到了非常重要的作用,下面具体介绍下ThreadPoolExecutor最重要的构造参数:


     ***CorePoolSize:制定了线程池中的线程数量。

     ***maximumPoolSize:指定了线程池中的最大线程数量。

     ***keepAliveTime:当线程池线程数量超过corePoolSize时,多余的空闲线程的存活时间。超过

corePoolSize的空闲线程,在多长时间内,会被销毁。

     ***unit:KeepAliveTime的单位。

     ***workQueue:任务队列,被提交但尚未被执行的任务。

     ***threadFactory:线程工厂,用于创建线程,一般用默认的即可。

     ***handler:拒绝策略。当任务太多,来不及处理,如何拒绝任务。


合理选择:优化线程池的数量


估算线程池大小的经验公式

        Ncpu=CPU的数量

        Ucpu=目标CPU的使用率,0<=Ucpu<=1

        W/C=等待时间与计算时间的比率


为保持处理器达到期望的使用率,最优池的大小等于:


        Nthreads=Ncpu*Ucpu*(1+W/C)


在java中,可以通过以下代码可以获得CPU的数量。

<span style="font-size:18px;">Runtime.getRuntime().availableProcessors()</span>


        以上就是Executor框架的核心部分。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java多线程之concurrent包(三)——Executor框架与线程池

Executor框架简介在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocur...

多线程执行框架Executor详解

为了能够更好的进行多线程编程,JDK提供了一套Executor执行框架,简化开发人员的对多线程的编程工作。 其框架结构图如下: 框架图比较庞大,但我们只需要关注如下几个实现: Executor...

多线程--Executor框架

Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,Completion...

Java多线程—Executor框架

本文简要介绍了Java多线程中的Executor框架,包括Runnable、Callable、Future、RunnableFuture、FutureTask、Executor、ExecutorSer...
  • sun927
  • sun927
  • 2015年07月05日 01:57
  • 978

java多线程 学习笔记(二)——线程执行器 Executor

在JDK5中提供了 java.util.concurrent包下的Executor来管理Thread对象,从而简化了并发编程。Executor在客户端和子线程之间提供了一个中间层,由这个类的对象来管理...

Java多线程——执行器(Executor)

Markdown编辑器上线啦,终于等到你! 执行器 构建一个新的线程是有一定的代价的,因为涉及到和操作系统的交互。如果程序中创建了大量的生命周期很短的线程,应该使用线程池(thread ...

Java多线程-实现多线程:Executor框架

使用Executor框架实现有返回结果的多线程:前言:   当程序需要并发处理大量任务时,为每个任务创建一个Thread并进行相关管理是非常影响程序执行效率并且线程数过多会使系统负载过重。而Exec...

多线程之Executor框架

Executor框架是指JAVA 5中引入的java.util.concurrent包中的一系列功能类。包括了Executor,Executors,ExecutorService,AbstractEx...
  • xianymo
  • xianymo
  • 2015年02月04日 16:34
  • 407

Java多线程之Executor框架(2)

在Thread,Runnable传统方式实现多线程执行的时候,默认这些线程是没有返回值的,如果需要返回值怎么处理,这里需要用到Executor框架的Callable接口,这个接口和Thread,Run...

Java多线程之Executor框架

Executors创建线程池的方法: public static ExecutorService newFixedThreadPool(int nThreads) 创建固定数目线程的线程池。 pub...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【多线程】——Executor框架
举报原因:
原因补充:

(最多只允许输入30个字)