理解Java线程池ThreadPoolExecutor

  • 时间:
  • 浏览:0
  • 来源:万人红黑大战棋牌_万人红黑大战棋牌官网

继承抽象类AbstractExecutorService,它实现了ExecutorService 接口

ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常

在ThreadPoolExecutor类中,最核心的任务提交最好的法律土办法是execute()最好的法律土办法,随便说说通过submit也可不还要提交任务,而且实际上submit最好的法律土办法上边最终调用的还是execute()最好的法律土办法,这样来越多这样来越多这样来越多这样来越多有大伙儿只还要研究execute()最好的法律土办法的实现原理即可:

非核心系统程序:设置的大于corePoolSize参数小于maximumPoolSize参数的每项,而是系统程序池可不还要临时创建的“非核心系统程序”的最大数量。這個 情况下由于某个系统程序这样运行任何任务,等待的图片 的图片 keepAliveTime时间后,這個 系统程序由于被销毁,直到系统程序池的系统程序数量重新达到corePoolSize。

workQueue:有兩个 多多阻塞队列,用来存储等待的图片 执行的任务。一般来说,这里的阻塞队列有以下几种选折 :ArrayBlockingQueue,LinkedBlockingQueue,SynchronousQueue。

·····························································································

ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,而且重新尝试执行任务(重复此过程)

timeUnit:参数keepAliveTime的时间单位。

构造函数中还要传入的参数包括corePoolSize、maximumPoolSize、keepAliveTime、timeUnit、workQueue、threadFactory和handler。

<未完待续>

大多数实际场景中是那我的:防止某一次请求的时间是非常短暂的,而且请求数量是巨大的。這個 背景下,由于大伙儿为每有兩个 多多请求都单独创建有兩个 多多系统程序,这样物理机的所有资源基本上都被操作系统创建系统程序、切换系统程序情况、销毁系统程序哪几种操作所占用,用于业务请求防止的资源反而减少了。这样来越多这样来越多这样来越多这样来越多有最理想的防止最好的法律土办法是,将防止请求的系统程序数量控制在有兩个 多多范围,既保证后续的请求我这样多 等待的图片 太长时间,又保证物理机将足够的资源用于请求防止一种生活。

threadFactory:系统程序工厂,主要用来创建系统程序。

先来看一下ThreadPoolExecutor类中这样来越多这样来越多的这样来越多这样来越多比较重要成员变量:

maximumPoolSize:当前系统程序池允许创建的最大系统程序数量。这样由于设置的corePoolSize参数和设置的maximumPoolSize参数一致时,系统程序池在任何情况下都有会回收空闲系统程序。keepAliveTime和timeUnit也就遗弃了意义。

keepAliveTime:系统程序这样任务执行时最多保持多久时间会终止。默认情况下,非要当系统程序池中的系统程序数大于corePoolSize时,keepAliveTime才会起作用,直到系统程序池中的系统程序数不大于corePoolSize,即当系统程序池中的系统程序数大于corePoolSize时,由于有兩个 多多系统程序空闲的时间达到keepAliveTime,则会终止,直到系统程序池中的系统程序数不超过corePoolSize。而且由于调用了allowCoreThreadTimeOut(boolean)最好的法律土办法,在系统程序池中的系统程序数不大于corePoolSize时,keepAliveTime参数也会起作用,直到系统程序池中的系统程序数为0。

corePoolSize:系统程序池主要用于执行任务的是核心系统程序数量。默认情况下,在创建了系统程序池后,系统程序池中的系统程序数为0,当有任务来很久,就会创建有兩个 多多系统程序去执行任务,当系统程序池中的系统程序数目达到corePoolSize后,就会把到达的任务放上缓存队列当中。

二话这样来越多说,来看一下ThreadPoolExecutor类的具体实现源码。

在Java的系统程序池的使用会有比较多的地方,有比较多的应用场景,介绍一下Java系统程序池ThreadPoolExecutor。

ThreadPoolExecutor类中提供了兩个构造最好的法律土办法:

handler:表示当拒绝防止任务时的策略。有以下一种生活取值:

ThreadPoolExecutor.CallerRunsPolicy:由调用系统程序防止该任务

ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,而且不抛出异常

系统程序是有兩个 多多操作系统概念。操作系统负责這個 系统程序的创建、挂起、运行、阻塞和终结操作。而操作系统创建系统程序、切换系统程序情况、终结系统程序都有进行CPU调度----这是有兩个 多多耗费时间和系统资源的事情。