线程池原理——高频面试题

article/2025/10/7 8:55:32

1.高频面试题:

1.为什么使用线程池,优势是什么;

2.线程池如何使用;

3.线程池的几个重要的参数介绍;

4.线程池底层工作原理;

5.线程池用过吗?生产上你如何设置合理参数;

2.线程的理解

 3.线程池的意义

线程池稀缺资源,它的创建和销毁是比较重且好资源的操作。而java线程依赖于内核线程,创建线程需要进行操作系统状态切换,为避免资源过度消耗需要设法重用线程执行多个任务。线程池就是一个线程缓存,负责对线程进行统一分配、调优与监控。

线程池优势:

(1)重用存在的线程,减少线程创建,消亡的开销,提高性能;

(2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行

(3)提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控

4.线程池是如何实现的-Executor

 创建线程的5种方式

一般不用executor创建,而是通过如下方式创建

拒绝策略:

1.AbortPolicy—抛弃任务并抛出异常(默认的拒绝策略)

2.DiscardPolicy——既不执行任务,也不抛出异常

3.DiscardOldestPolicy——丢掉队列里面最前面的任务

4.CallerRunsPolicy——调用者回退机制策略

 5.线程池的5种状态

Running:能接收新任务,以及处理已经添加的任务

Shutdown:不能接收新任务,可以处理已经添加的任务

Stop:不接收新任务,不处理已经添加的任务,并且中断已经处理中的任务

Tidying:所有的任务已经终止,ctl记录的任务数量为“0”(ctl负责记录线程池的运行状态与活动线程数)

Terminated:线程池彻底终止,则线程池转化为terminated状态。

 高三位记录线程池状态,低29位记录活动线程数

 线程池中的线程的复用代码

6.线程池数量如何设置

1.线程根据执行的任务内容主要分为CPU密集型和IO密集型,很多有经验的说CPU密集型:线程数量=CPU核数+1,IO密集型线程数量=CPU核数*2;

但是我们知道线程执行有执行时间ST和等待时间WT,应该为(ST+WT)/ST * CPU核数

比如一个线程执行时间ST=0.5s,等待时间WT=1.5s,该机器的核数是8,那么该线程池最大的线程数=(1.5+0.5)/0.5*8=32;


http://chatgpt.dhexx.cn/article/01bOcm4h.shtml

相关文章

Android线程池原理详解

简介 但凡有点开发经验的同学都知道,频繁的创建和销毁线程是会给系统带来比较大的性能开销的。所以线程池就营运而生了。那么使用线程池有什么好处呢? 降低资源消耗 可以重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度 当任务到达时…

Java面试题之:线程池原理

Java面试题之:线程池原理 一、简介二、线程复用三、线程池的组成四、拒绝策略五、Java 线程池工作过程 一、简介 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量…

ThreadPoolExecutor线程池原理

ThreadPoolExecutor线程池原理 线程池原理1. 线程池的简单介绍1.1 线程池是什么1.2 线程池解决的核心问题是什么 2. 线程池的实现原理2.1 线程池的执行流程2.2 源码分析 3. 线程池的使用3.1 线程池的创建3.2 向线程池提交任务3.3 生命周期管理3.4 关闭线程池3.5 合理地配置线程…

线程池原理分析

使用线程池目的 在开发过程中,合理地使用线程池能够带来3个好处。 1.降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 2.提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 3.提高线程的可管理性。线程是稀…

Java 线程池原理总结

Java 线程池原理总结 (一)什么是线程池 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线…

线程池原理总结

【引言】 关于线程池,印象中好像自己有写过相关的总结博客。翻了翻之前的博客,确实,在去年十一月写过一篇《线程池使用总结》。 时隔一年,我已经离开了那家让我成长很多的公司,在那里,写了很多的代码&…

线程池原理全解析

目录 1 线程池简介 2 线程池 2.1 ThreadPoolExecutor类 2.2 ThreadPoolExecutor方法 3 线程池实现原理 3.1.线程池状态 3.2.任务的执行 总结过程 3.3.线程池中的线程初始化 3.4.任务缓存队列及排队策略 3.5.任务拒绝策略 3.6.线程池的关闭 3.7.线程池容量的动态调…

一文带你清晰弄明白线程池的原理

不知道你是否还记得阿里巴巴的java代码规范中对多线程有这样一条强制规范: 【强制】线程资源必须通过线程池提供,不允许在程序中显示创建线程。 说明:使用线程池的好处是减少在创建和销毁线程池上所消耗的时间以及系统资源的开销,解决资源不足…

线程池工作原理

一、线程池默认工作流程 1、线程在有任务的时候会创建核心的线程数corePoolSize 2、当线程满了(有任务但是线程被使用完)不会立即扩容,而是放到阻塞队列中,当阻塞队列满了之后才会继续创建线程。 3、如果队列满了,线程数达到最大线程数则会执行拒绝策…

线程池的工作原理

线程池,就是存放线程的池子,池子里存放了很多可以复用的线程 作用: 1.对线程进行统一管理 2.降低系统资源消耗。通过复用已存在的线程,降低线程创建和销毁造成的消耗 3.提高响应速度。当有任务到达时,无需等待新线…

线程池核心原理分析

一、基础概念 线程池是一种多线程开发的处理方式,线程池可以方便得对线程进行创建,执行、销毁和管理等操作。主要用来解决需要异步或并发执行任务的程序 谈谈池化技术 简单点来说,就是预先保存好大量的资源,这些是可复用的资源,你需要的时候给你。对于…

线程池原理(讲的非常棒)

Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了&…

服务器常见的网络攻击以及防御方法

网络安全威胁类别 网络内部的威胁,网络的滥用,没有安全意识的员工,黑客,骇客。 木马攻击原理 C/S 架构,服务器端被植入目标主机,服务器端通过反弹连接和客户端连接。从而客户端对其进行控制。 病毒 一…

传奇服务器容易受到什么攻击,怎么防御攻击?

有兄弟问明杰,说自己打算开服,听说攻击挺多的,就是想先了解一下开传奇用的服务器最容易受到什么类型的攻击,如果遇到了又改怎么防御呢?带着这个问题,明杰跟大家详细的说一下,常见的开区时候遇到…

传奇服务器常见的网络攻击方式有哪些?-版本被攻击

常见的网络攻击方式有哪些?常见的网络攻击方式 :端口扫描,安全漏洞攻击,口令入侵,木马程序,电子邮件攻击,Dos攻击。 1.传奇服务器端口扫描: 通过端口扫描可以知道被扫描计算机开放了…

服务器被ddos攻击的处置策略

如果您的服务器遭到了DDoS攻击,以下是一些可以采取的措施: 使用防火墙和安全组进行限制:限制服务器的流量以防止进一步的攻击。 升级服务器资源:为了应对更高的流量,可以升级服务器的内存,处理器等资源。 安…

如何从根本上防止服务器被攻击

随着互联网的发展,服务器成为了企业和个人网络应用的重要基础设施。但是,随之而来的网络安全威胁也在不断增加,服务器安全问题也成为了影响企业信息安全的重要因素。针对这种情况,服务器安全防御变得尤为重要。   服务器安全防御…

来一起学怎么攻击服务器吧!!!

我们上线了两门新课。 一门教你漏洞的原理和攻击代码怎么写。 一门会教你木马的制作。 一如既往地,新课刚上线都是限时优惠状态,感兴趣的同学用力点击下面这两个妹子吧: Kali 渗透测试 - 服务器攻击实战 Kali 渗透测试 - 后门技术实战 提示&a…

网站服务器怎么做防御?遇到攻击如何解决?

每个网站都可能遇到网络攻击,这是正常现象。攻击可能来自密码错误、防火墙配置错误、病毒软件、空闲端口等。大量的网络攻击在竞争激烈的行业或企业中更为常见。 目前需要有一套完整的安全策略来保护流浪数据,防止网站服务器被攻击。完善可靠的安全策略…

服务器被攻击怎么办?常见处理方法

对于企业用户来,最害怕的莫过于服务器遭受攻击了,比如被大量登录、网页被篡改、数据库被非法登录、网络日志异常等,尽管运维人员在此之前做好了全面的防范工作,但攻击再所难免,如何在服务器遭受攻击后能够迅速有效的处…