JDK中的线程池

java.util.concurrent.ThreadPoolExecutor) 方法。底下提供了四种预界说的处理程序策略: 
  在默认的 ThreadPoolExecutor.AbortPolicy 中,处理程序碰钉子将抛出运行时 RejectedExecutionException。 
  在 ThreadPoolExecutor.CallerRunsPolicy 中,线程调用运行该任务的 execute 本身。此策略提供简单的反馈控制机制,能够减缓新任务的提交速度。 
  在 ThreadPoolExecutor.DiscardPolicy 中,不克不及执行的任务将被删去。 
  在 ThreadPoolExecutor.DiscardOldestPolicy 中,要是执行程序尚未关闭,则位于工作行列步队头部的任务将被删去,然后重试执行程序(要是再次败绩,则反复此过程)。 
  界说和施用其他种类的 RejectedExecutionHandler 类也是可能的,但这样做需要非常小心,尤其是当策略仅用于特定容量或排队策略时。 

 


  1、简介 
  线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: 
  ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, 
  long keepAliveTime, TimeUnit unit, 
  BlockingQueue<Runnable> workQueue, 
  RejectedExecutionHandler handler) 
  corePoolSize: 线程池维护线程的最少数目 
  maximumPoolSize:线程池维护线程的最大数目 
  keepAliveTime: 线程池维护线程所允许的空暇时间 
  unit: 线程池维护线程所允许的空暇时间的单位 
  workQueue: 线程池所施用的缓和冲突行列步队 
  handler: 线程池对拒绝任务的处理策略 

 


  1个任务通过 execute(Runnable)方法被新增到线程池,任务就是1个 Runnable类型的对象,任务的执行方法就是 Runnable类型对象的run()方法。 
  当1个任务通过execute(Runnable)方法欲新增到线程池时: 
  要是此时线程池中的数目小于corePoolSize,即使线程池中的线程都处于空暇状况,也要始于新的线程来处理被新增的任务。 
  要是此时线程池中的数目等于 corePoolSize,可是缓和冲突行列步队 workQueue未满,那么任务被放入缓和冲突行列步队。 
  要是此时线程池中的数目大于corePoolSize,缓和冲突行列步队workQueue满,而且线程池中的数目小于maximumPoolSize,建新的线程未处理被新增的任务。 
  要是此时线程池中的数目大于corePoolSize,缓和冲突行列步队workQueue满,而且线程池中的数目等于maximumPoolSize,那么通过 handler所指定的策略来处理此任务。 

 


  也就是:处理任务的优先级为: 
  核心线程corePoolSize、任务行列步队workQueue、最大线程maximumPoolSize,要是三者都满了,施用handler处理被拒绝的任务。 
  当线程池中的线程数目大于 corePoolSize时,要是某线程空暇时间超过keepAliveTime,线程将被终止。这样,线程池可以动态的调解池中的线程数。 

 


  unit可选的参量为java.util.concurrent.TimeUnit中的几个静态属性: 
  NANOSECONDS、MICROSECONDS、MILLISECONDS、SECONDS。 

 


  workQueue我常用的是:java.util.concurrent.ArrayBlockingQueue 

 


  handler有四个选择: 
  ThreadPoolExecutor.AbortPolicy() 
  抛出java.util.concurrent.RejectedExecutionException异样 
  ThreadPoolExecutor.CallerRunsPolicy() 
  重试新增时下的任务,他会自动反复调用execute()方法 
  ThreadPoolExecutor.DiscardOldestPolicy() 
  抛弃旧的任务 
  ThreadPoolExecutor.DiscardPolicy() 
  抛弃时下的任务 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值