java线程池面试题_java之线程池面试题

java线程池面试题_java之线程池面试题面试官:线程池有哪些?分别的作用是什么?常用的线程池有:newSingleThreadExecutornewFixedThreadExecutornewCacheThreadExecutornewScheduleThreadExecutor1、newSingleThreadExecutor:单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务;2、newFixedThreadExe…

大家好,又见面了,我是你们的朋友全栈君。

面试官:线程池有哪些?分别的作用是什么?

常用的线程池有:

newSingleThreadExecutor

newFixedThreadExecutor

newCacheThreadExecutor

newScheduleThreadExecutor

1、newSingleThreadExecutor:

单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务;

2、newFixedThreadExecutor:

固定数量的线程池,每提交一个任务就是一个线程,直到线程达到线程池的最大数量,然后后面进入等待队列直到前面的任务才继续执行;

3、newCacheThreadExecutor:

可缓存线程池,当线程池大小超过了处理任务所需的线程,那么就会回收部分空闲(一般 是60秒无执行)的线程,当有任务时,会添加新线程来执行;

4、newScheduleThreadExecutor:

大小无限制的 线程池,支持定时和周期性的执行线程。

ThreadPoolExecutor解说:

ThreadPoolExecutor是上面几个线程池底层的实现,封装了一层线程类worker,在运行的时候执行完自己的线程后主动去队列中取下一条线程去执行。

其中完整的构造方法是:

public ThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,

TimeUnit unit,

BlockingQueueworkQueue,

ThreadFactory threadFactory,

RejectedExecutionHandler handler) {if (corePoolSize < 0 ||maximumPoolSize<= 0 ||maximumPoolSize< corePoolSize ||keepAliveTime< 0)throw newIllegalArgumentException();if (workQueue == null || threadFactory == null || handler == null)throw newNullPointerException();this.corePoolSize =corePoolSize;this.maximumPoolSize =maximumPoolSize;this.workQueue =workQueue;this.keepAliveTime =unit.toNanos(keepAliveTime);this.threadFactory =threadFactory;this.handler =handler;

}

corePoolSize:线程池中所保存的线程数,包括空闲线程;

maximumPoolSize:线程池中允许的最大线程数;

keepAliveTime:线程存活时间,当超过keepAliveTime的时候后还无法获取新的任务,则返回null;

unit:keepAliveTime参数的时间单位;

workQueue:执行前用于保持任务的队列,此队列仅保持由execute方法提交的Runnable任务;

threadFactory:执行程序创建新线程时使用的工厂;

handler:由于超出线程范围和队列容量而使用执行被阻塞时所使用的处理策略;

拒绝策略RejectedExecutionHandler有哪些,分别有什么作用:

AbortPolicy:该策略是线程池默认策略;如果线程池队列满了丢掉这个任务并且抛出RejectedExecutionException异常。

DiscardPolicy:如果线程池队列满了,会直接丢掉这个任务并且不会有任何异常。

DiscarOldestPolicy:如果队列满了,会将最早进入队列的任务删掉腾出空间,再尝试加入队列。

CallRunsPolicy:如果添加到线程池失败,那么主线程会自己取执行该任务,不会等待线程池的线程取执行。

自定义策略

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143023.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • apply方法 python_python min函数

    apply方法 python_python min函数Pythonapply函数的用法发布于2014-08-0721:02:24|674次阅读|评论:0|来源:网友投递Python编程语言Python是一种面向对象、解释型计算机程序设计语言,由GuidovanRossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各…

    2022年10月27日
  • 分享一键群发各大博客社区平台的工具

    分享一键群发各大博客社区平台的工具文章目录1.BlogHelper2.OpenWrite随着自媒体越来越流行,一篇文章或一个视频分别要在几个平台上发布…

    2022年7月4日
  • 用Excel处理笛卡尔积

    用Excel处理笛卡尔积    工作中遇到需要处理笛卡尔积的需求,用数据库只需把需要做笛卡尔积的各列进行外链接就可以了,想到Excel应该可以处理这样的需求,就百度学习了一下,但还是看不太懂,下面只是依葫芦画瓢做了一遍,记录一下。1、构建两列数据,如下图:2、构建D列辅助列,E列为用index函数处理A列后的数据,每个值的重复次数为B列的数值行数。3、用index()函数处理B列:…

    2022年7月27日
  • iOS 删除黑色边框线导航栏&amp;删除搜索框的阴影边界线和中黑色文本输入框 - 解

    iOS 删除黑色边框线导航栏&amp;删除搜索框的阴影边界线和中黑色文本输入框 - 解

    2022年1月15日
  • 信息熵和基尼系数_信息熵和基尼系数

    信息熵和基尼系数_信息熵和基尼系数一、基尼系数是什么?1)定义    下面是摘自李航《统计学习方法》中基尼系数的定义,非常清晰。2)基尼系数有什么意义?    我们可以先来看一组数据X的取值 方案一 方案二 方案三 方案四 P的平方 方案一 方案二 方案三 方案四类别一 0.9 0.5 0.4 0.2 p1^2 0.81 0.25 0.16 0.04类别二 0.1 0.5 0.3 0.2 p2^2 0.01 0.25 0.09 0…

    2022年10月10日
  • spss k均值聚类_K均值法与系统聚类法的异同

    spss k均值聚类_K均值法与系统聚类法的异同总目录:SPSS学习整理SPSS实现快速聚类(K-Means/K-均值聚类)目的适用情景数据处理SPSS操作SPSS输出结果分析知识点目的利用K均值聚类对数据快速分类适用情景数据处理SPSS操作分析——分类——K-均值聚类最大迭代次数根据数据量,分类数量,电脑情况自己调整,能选多点就把上限调高点。SPSS输出结果分析在数据集最右两列保存了该个案的分类结果与到聚类中心的距离。由于没有自定义初始中心,系统设定了三个。迭代9次后中心值不变。最终个三个聚类中心以及他们

    2022年10月29日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号