面试:线程和线程池

news2024/11/24 22:57:30

目录

目标

一、线程有哪些状态

1、新建态(NEW):

2、可运行态(RUNNABLE):

3、终结态(TERMINATED):

 4、阻塞态(BLOCKED):

5、等待态(WAITING):

6、有时限的等待(TIMED_WAITING):

1、获得有时限的wait(要释放锁)

2、调用线程的sleep方法(不释放锁)

二、按操作系统层面划分(五种状态)

三、线程池的核心参数(高频面试题)

1、corePoolSize(核心线程数):

2、maximumPoolSize(最大线程数目):

3、keepAliveTime(生存时间):

4、unit(时间单位):

5、workQueue

6、threadFactory(线程工厂):

7、handler(拒绝策略):


目标

  • 掌握Java线程的状态
  • 掌握Java 线程状态之间的转换
  • 辨析两种说法,六种状态 vs五种状态
  • 掌握线程池的主要参数

一、线程有哪些状态

新建态-->可运行态-->终结态(单向且不可逆)

1、新建态(NEW):

在新建一个线程时,它并不是一个真正的线程,只有在它调用了线程的start方法后,他就会由新建状态转换为可运行状态

2、可运行态(RUNNABLE):

这时候它真正与线程关联起来了,这时候它当中的代码就会交由操作系统分配给CPU执行

3、终结态(TERMINATED):

线程真正走到了尽头,底层所关联的线程和关联的相关资源也会得到释放。

 4、阻塞态(BLOCKED):

  • 线程在运行时,可能会发生多个线程争抢同一把锁,获取锁失败的线程就会进入阻塞态。
  • 在持锁线程释放锁的时候,就会唤醒阻塞的线程,然它们进行下一轮竞争锁的动作。
  • 这一轮竞争锁成功的线程就会恢复为可运行态;失败的线程仍然阻塞。

5、等待态(WAITING):

  • 线程在获得锁后去不满足条件,就会进入等待态,并且释放锁;在以后满足条件后再获得锁。
  • 但是之后它要重新去争抢锁。

6、有时限的等待(TIMED_WAITING):

1、获得有时限的wait(要释放锁

时间到了或者调用notify()都会唤醒。

2、调用线程的sleep方法(不释放锁

只有时间到了才会唤醒

二、按操作系统层面划分(五种状态)

  • 分到CPU时间的:  运行
  • 可以分到CPU时间的:  就绪
  • 分不到CPU时间的:  阻塞

注意:Java中的 RUNNABLE涵盖了就绪、运行、阻塞I/O

三、线程池的核心参数(高频面试题)

1、corePoolSize(核心线程数):

最多保留的线程数

2、maximumPoolSize(最大线程数目):

核心线程 + 救急线程

3、keepAliveTime(生存时间):

针对救急线程

4、unit(时间单位):

针对救急线程

5、workQueue

阻塞队列

6、threadFactory(线程工厂):

可以为线程创建时起个好名字

7、handler(拒绝策略):

(1)默认:ThreadPoolExecutor.AbortPolicy();

抛异常

(2)  ThreadPoolExecutor.CallerRunsPolicy();

让调用者自己处理任务,此时为主线程调用submit

所以该任务由主线程处理

(3)  ThreadPoolExecutor.DiscardPolicy();

直接丢弃任务,也不抛异常

(4)  ThreadPoolExecutor.DiscardOldestPolicy();

把队列中最老的任务丢弃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1589792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kafka快速入门+应用

Kafka, 构建TB级异步消息系统 1.快速入门 1.1 阻塞队列 在生产线程 和 消费线程 之间起到了 , 缓冲作用,即避免CPU 资源被浪费掉 BlockingQueue 解决 线程通信 的问题阻塞方法 put 、 take生产者、消费者 模式 生产者:产生数据的线程…

使用Mac自带终端进行远程ssh连接Linux服务器

废话不多说,直接上图 好吧,我承认我是多此一举,脱裤子放pi了,其实只需要在终端输入一行命令就可以了(呜呜~) ssh rootip -p 22 需要注意的是,命令里的ip地址同样要替换成你自己的服…

云LIS系统源码,ASP.NET区域LIS系统源码,实验室信息系统

云LIS系统源码,ASP.NET区域LIS系统源码,实验室信息系统 LIS技术架构:ASP.NET CORE 3.1 MVC SQLserver Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、S…

阿里云服务器带宽价格全解析,附报价单

阿里云服务器公网带宽怎么收费?北京地域服务器按固定带宽计费一个月23元/M,按使用流量计费0.8元/GB,云服务器地域不同实际带宽价格也不同,阿里云服务器网aliyunfuwuqi.com分享不同带宽计费模式下带宽收费价格表: 公网…

十五届web模拟题整理

模拟赛一期 1.动态的Tab栏 请在 style.css 文件中补全代码。 当用户向下滚动的高度没有超过标题栏(即 .heading 元素)的高度时,保持 Tab 栏在其原有的位置。当滚动高度超过标题栏的高度时,固定显示 Tab 栏在网页顶部。 /* TODO…

03 SQL基础 -- 查询与运算符

一、SELECT 语句基础 1.1 从表中选取数据 SELECT 语句 从表中选取数据时需要使用SELECT语句,也就是只从表中选出(SELECT)必要数据的意思。通过SELECT语句查询并选取出必要数据的过程称为匹配查询或查询(query) 基本SELECT语句包含了SELECT和FROM两个子句(clause)。示…

PointNet++函数square_distance(src, dst):计算两组点之间的欧式距离(代码详解)

文章目录 一、计算两组点之间的欧式距离二、举例三、中间结果输出 一、计算两组点之间的欧式距离 def square_distance(src, dst):"""Calculate Euclid distance between each two points.src^T * dst xn * xm yn * ym zn * zm;sum(src^2, dim-1…

模块化组合优势凸显钡铼IOy系列轻松应对大规模工业自动化工程

模块化组合是钡铼IOy系列独立式I/O模块的一大优势,它为大规模工业自动化工程提供了灵活性、可扩展性和定制性,从而轻松应对不同规模和复杂度的工厂应用。以下是关于模块化组合优势的详细解析: 1. 灵活性和定制性 模块化设计使得钡铼IOy系列…

字节Coze实现多Agent模式,文内在线体验,实时给产品经理提需求

摘要: 多Agent模式是一种分布式计算范式,它通过将复杂任务分解为多个子任务,并由独立的智能体(Agents)并行处理,从而提高系统的处理能力和效率。这种模式在自然语言处理、机器学习和其他数据密集型应用中尤…

未来汽车硬件安全的需求(1)

目录 1.概述 2.EVITA 2.1 EVITA HSM 2.2 EVITA保护范围 3.市场变化对车载网络安全的影响 3.1 非侵入式攻击的风险 3.2 量子计算机的蛮力攻击 3.3 整车E/E架构的变化 3.4 网络安全标准和认证 3.5 汽车工业的网络安全措施 4.汽车安全控制器 4.1 TPM2.0 4.2 安全控…

【2024最新】微信公众号怎么开启留言功能

关注微信公众号:怒码少年,回复关键词【电子书】可以免费获取计算机相关电子书 本文首发于:原文阅读-wx公众号:怒码少年 大家好,我是小码。 微信公众号从18年开始,正式关闭了留言功能。自此以后新注册的公…

华为校园公开课走入上海交大,鸿蒙成为专业核心课程

4月12日,华为校园公开课在中国上海交通大学成功举办,吸引了来自计算机等相关专业的150余名学生参加。据了解,由吴帆、陈贵海、过敏意、吴晨涛、刘生钟等教授在中国上海交通大学面向计算机系本科生开设的《操作系统》课程,是该系学…

python中time库的time.time()函数的作用是什么?

python中time库的time.time()函数的作用是什么? 作用:Python time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。 time()方法语法:time.time() #!/usr/bin/python # Write Python 3 code in this onlin…

程序“猿”自动化脚本(一)

1.剪贴板管理器📋 您是否曾经发现自己在处理多个文本片段时忘记了复制的内容?有没有想过有一个工具可以跟踪您一天内复制的所有内容? 该自动化脚本会监视您复制的所有内容,将每个复制的文本无缝存储在时尚的图形界面中&#xff0c…

中国绿色技术助力全球能源转型(国际论坛)

中国的清洁能源发展战略和实践对全球能源结构转型产生了深远影响。作为全球最大的可再生能源生产和消费国,中国在推动国内可再生能源产业发展的同时,也积极与世界各国分享技术和经验,促进全球范围内清洁能源技术的普及和应用成本的降低。例如…

乘势而上 韧性增长丨凡泰极客入选华为首批HarmonyOS开发服务商

3月日,凡泰极客受邀参加华为在南京举办的“鲸鸿动能服务商政策发布暨鸿蒙服务商先锋计划授牌仪式”。此次仪式主题为“乘势而上,韧性增长”,首批HarmonyOS开发服务商汇聚一堂,携手共进,打造鸿蒙生态繁荣未来。凡泰极客…

PCIe总线-存储器域和PCIe总线域访问流程(二)

1.概述 PCIe总线的最大特点是像CPU访问DDR一样,可以直接使用地址访问PCIe设备(桥),但不同的是DDR和CPU同属于存储器域,而CPU和PCIe设备属于两个不同的域,PCIe设备(桥)的地址空间属于…

李彦宏放话:百度AI大模型绝不抢开发者饭碗

关注卢松松,会经常给你分享一些我的经验和观点。 昨晚,李彦宏内部讲话称:AI大模型开源意义不大,百度绝不抢开发者饭碗。 但你一定要说话算话哦,可千万别说:“我永远不做手机,谁再敢提做手机就给…

最新PDD商家端Anti-Content参数逆向分析与纯算法还原

文章目录 1. 写在前面2. 接口分析3. 断点分析4. 扣JS代码 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致…

jeecg-boot安装

我看大家都挺关注,所以集中上传了下代码和相关工具,方便大家快速完成 链接:https://pan.baidu.com/s/1-Y9yHVZ-4DQFDjPBWUk4-A 提取码:op1r 1. 下载代码 下载地址 : JEECG官方网站 - 基于BPM的低代码开发平台(低代码平台_零代…