码迷,mamicode.com
首页 > 编程语言 > 详细

面试之线程池

时间:2021-02-27 13:05:13      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:info   四种   实现   构造函数   call   loading   class   png   提交   

1。构造方法

public ThreadPoolExecutor(int corePoolSize,  
                              int maximumPoolSize,  
                              long keepAliveTime,  
                              TimeUnit unit,  
                              BlockingQueue<Runnable> workQueue,  
                              ThreadFactory threadFactory,  
                              RejectedExecutionHandler handler)

2.图示:主要对象任务队列(fifo先进先出),核心线程数,非核心线程数,最大线程数,空闲时间

技术图片

 

3.线程池流程

技术图片

 

 4.饱和策略

handler:饱和策略,大家都很忙,咋办呢,有四种策略
CallerRunsPolicy:只要线程池没关闭,就直接用调用者所在线程来运行任务
AbortPolicy:直接抛出 RejectedExecutionException 异常
DiscardPolicy:悄悄把任务放生,不做了
DiscardOldestPolicy:把队列里待最久的那个任务扔了,然后再调用 execute() 试试看能行不

5.执行提交方式

ExecutorService 提供了两种提交任务的方法:

  1. execute():提交不需要返回值的任务
  2. submit():提交需要返回值的任务

6.线程池类型

JDK 为我们内置了五种常见线程池的实现,均可以使用 Executors 工厂类创建,其实底部都是使用

ThreadPoolExecutor这个构造函数的不通的参数模式,
其中比较特殊的是:

newScheduledThreadPool,周期性的线程任务

  • scheduleAtFixedRate() :按某种速率周期执行
  • scheduleWithFixedDelay():在某个延迟后执行

 

面试之线程池

标签:info   四种   实现   构造函数   call   loading   class   png   提交   

原文地址:https://www.cnblogs.com/longsanshi/p/14452675.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!