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)
上一篇 2022年5月22日 下午2:00
下一篇 2022年5月22日 下午2:00


相关推荐

  • Vue 全家桶介绍

    Vue 全家桶介绍Vue 全家桶介绍 Vue 有著名的全家桶系列 包含了 vue router http router vuejs org vuex http vuex vuejs org vue resource https github com pagekit vue resource 再加上构建工具 vue cli sass 样式 就是一个完整的 vue 项目的核心构成 概括起来就是

    2026年3月26日
    2
  • jqGrid基本用法与示例「建议收藏」

    jqGrid基本用法与示例「建议收藏」转自:https://chuanlu.iteye.com/blog/1953544一、jqGrid的基本用法1、html页面Html代码<!DOCTYPE html 

    2022年7月3日
    59
  • centos7 网络配置

    centos7 网络配置centos7刚安装,需要做一些配置才能正常上网!1.虚拟网络编辑器配置1)通过VMware菜单栏,依次点击编辑和虚拟网络编辑器2)选中VMnet8,取消勾选使用本地DHCP服务将IP地址分配给虚拟机,查看DHCP确保未启用,点击NAT设置3)查看网关IP,并记住192.168.255.2,用于网络配置文件设置2.修改mac地址如果本虚拟机为克隆机,则需要重新…

    2022年4月28日
    49
  • 讯飞星火X1深度推理大模型:实战能力解析

    讯飞星火X1深度推理大模型:实战能力解析

    2026年3月14日
    2
  • html5用什么工具开发_HTML5软件

    html5用什么工具开发_HTML5软件HTML5发展如火如荼,随着各大浏览器对HTML5技术支持的不断完善以及HTML5技术的不断成熟,未来HTML5必将改变我们创建Web应用程序的方式。今天这篇文章向大家推荐10款优秀的

    2022年8月5日
    10
  • c winform 打印 html,C Winform 打印控件PrintDocument

    c winform 打印 html,C Winform 打印控件PrintDocument由于本着节约的原则 这里的打印都只是保存为 oxps 格式的文件 在我调试时每次打印完成后 窗体都会自己闪退 在网上并没有相关资料 经过加入断点确认问题在 privatevoidb Click objectsender EventArgse printDocumen Print 修改为 privatevoidb Click objectsender

    2026年3月26日
    3

发表回复

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

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