高并发-线程池面试

文章目录

  • 高并发-线程池2024
    • 心得
    • 好的博客
    • 必会面试题
    • 为什么使用线程池
    • 线程池的实现原理
    • 线程池的拒绝策略
    • 阻塞队列已满,在提交任务会发生什么问题
    • threadlocal原理和使用
    • 多线程配置

高并发-线程池2024

心得

  1. 面试都是围绕着三高展开,高并发,高可用,分布式展开。多线程属于高并发的范畴

  2. 好多问题在数据访问量比较小的情况下不好发生,但是数据量比较大的情况下,就要考虑更多,否则就会出问题。

  3. 在学习原理和底层这块,会用到很多的图例,图解,这块最好用在线画图工具自己画出来,并把链接贴过来,或者用md来画图也可以。

好的博客

  • JUC学习指南 这里主要介绍的背景,属于前言
  • JUC快速入门各个知识点汇总 知识比较全面 九、线程池(重点)讲的比较好 下面是四种不同拒绝策略的使用效果 十二、死锁问题及排查
  • synchronized原理分析
  • JMeter详细使用教程及实际案例

必会面试题

  • 多线程
  • 面试题 26 . 简述 Synchronized 的原理 ?
  • 面试题 42 . Java 中的线程池是如何实现 ?
  • 面试题 43 . Java创建线程池的几个核心构造参数?
  • 面试题 44 . 请简述Java线程池中的线程是怎么创建的?
  • 面试题 86 . 请列举ThreadPoolexecutor参数配置?
  • 面试题 103 . 简述Java线程池中队列常用类型有哪些 ?
  • 面试题 122 . 简述乐观锁和悲观锁的理解及如何实现,有哪些实现方式?

为什么使用线程池

使用线程池的优点
减少不断创建和销毁线程的资源销耗,可以重复利用线程池中的线程
提高任务响应速度,不需要等待线程创建,就可以直接使用存在的线程
便于管理,可以统一的分配,管理和调优。

线程池的实现原理

如果线程数少于核心线程线程数,既是有线程空闲也是会创建新的线程。
如果线程数等于核心线程,那么就会把任务放到队列中。
如果线程池线程数大于或等于核心线程数,并且队列以及满了,但是线程数小于最大线程,那么就会创建新的线程来处理。
如果线程数达到了最大线程数,那么就会通过handle设置的策略来拒绝这个任务。
并且线程中的线程如果空闲时间超过了指定的空闲时间,就会被销毁,从而动态的调整线程池的数量。

线程池的拒绝策略

可以在构造器中设置线程池的拒绝策略
核心线程  最大线程 队列  首先核心线程创建,其次队列打满,才会继续创建线程,线程达到最大线程后,就会执行拒绝策略。有4种拒绝的策略
第一个 线程池满了一行,会抛出一个runtime的异常,我们可以感知到线程池已满,可以重试或放弃提交。
第二种,线程池满了,直接丢弃,不会通知,会有一定的风险
第三种,线程池满了,会丢弃线程队列中时间最长的线程,也会存在风险。
第四种,线程满了,先进行等待,等有资源了在提交新的任务。
我们也可以在方法中大于自己的日志,当线程池满了的情况下,及时处理。

阻塞队列已满,在提交任务会发生什么问题

核心线程  阻塞队列 非核心线程 执行拒绝策略

threadlocal原理和使用

这是一个线程本地存储机制,这个是一个键值对
比方存储保存用户的信息,保存连接的对象。
在线程池使用的时候,如果线程一直占用,可能会出现内存泄漏的情况发生。解决的办法是数据使用后要记得清除掉。

多线程配置

核心线程10个,其他线程根据电脑的核数,一核大概配置20个线程,队列排1000个。

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

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

相关文章

洗衣洗鞋店做小程序有什么优势?

互联网洗衣洗鞋小程序闪亮登场,想知道这款小程序有何魅力吗? 如今,众多商家纷纷推出预约上门洗鞋服务,💁‍♀️并倾力打造洗鞋小程序,旨在拓展线上销售渠道。🌟那么,这款洗鞋小程序究…

Oracle数据库的CURRENT SCN

数据库的CURRENT SCN是Oracle当前最大的SCN,可以通过多种方法获取该SCN: 1、直接从内存中获取。由于当前最大SCN存储在fixed sga中,因此可以通过Oracle debug工具DUMP kcsgscn结构体获取内存中的最大SCN。在下面的程序中,BA371为1…

网络配置的加密存储

随着数据泄露事件的增加,扰乱了公司的正常工作周期,企业遭受了损失。事实上,数据泄露可以通过存储加密来控制,存储加密是防止黑客对网络数据库造成严重破坏的最有效方法之一。在网络配置管理器中,存储加密可用于存储设…

SpringBoot解析MyBatis预编译SQL

pom.xml <profile><!-- 开发环境 --><id>dev</id><activation><!-- 默认激活 --><activeByDefault>true</activeByDefault></activation><properties><spring.profiles.active>dev</spring.profiles.ac…

Unity 模拟放大镜局部放大UI 效果实现

UI 放大实现 RectTransformUtility.ScreenPointToLocalPointInRectangle(rectScale, eventData.position, eventData.pressEventCamera, out localPos); 使用IPointerDownHandler 获取鼠标点击时的有效负载&#xff0c;并将鼠标坐标转成对应的UI 坐标&#xff0c;rectScale 为…

【Win】一键恢复IE11工具:让旧版浏览器在新系统中重生

微软在2020年8月的时候就已经公告IE11的生命周期终点&#xff0c;多次提醒将在2022年6月15日起不再支持IE 11&#xff0c;呼吁用户尽快转换到Chromium-based Microsoft Edge。微软也陆续终止旗下服务支持这个旧式浏览器。2021年3月&#xff0c;Chrome浏览器已不支持旧IE App。2…

字符串解析-KMP魔改

题目 已知存在一种字符串解析语法&#xff0c;其中的语法元素如下 N:用于匹配单个数字(0-9) A:用于匹配单个字母(a-z,A-Z) n():用于表示一个分组&#xff0c;分组中至少有一个N语法元素或者A语法元素&#xff0c;n为一个数值&#xff0c;表示匹配n次&#xff0c;1<n< 20…

欢迎光临Java中的客“栈”

就目前而言&#xff0c;相信大家对数组、链表还有栈都基本已经有了一些了解&#xff0c;本篇文章将以栈为主体&#xff0c;探究栈和数组&#xff0c;栈和链表之间的一些联系。 当然在开始对栈的学习之前&#xff0c;我们先回顾有关数组、链表的基础知识点。 学习代码就是一个…

四川景源畅信:如何更好的为抖音小店做引流?

在数字化营销的浪潮中&#xff0c;抖音小店作为新兴的电商形态&#xff0c;正以其独特的社交属性和流量优势吸引着众多商家的目光。如何为抖音小店引流&#xff0c;成为许多店主心中的疑问。本文将深入探讨有效提升店铺流量的策略&#xff0c;助你在抖音平台上快速崛起。 一、内…

代码随想录算法训练营第二十五天:树的最后学习

代码随想录算法训练营第二十五天&#xff1a;树的最后学习 如果不对递归有深刻的理解&#xff0c;本题有点难 单纯移除一个节点那还不够&#xff0c;要修剪&#xff01; #669. 修剪二叉搜索树 力扣题目链接(opens new window) 给定一个二叉搜索树&#xff0c;同时给定最小边界…

shell脚本之sort,uniq,tr,cut,sphit,paste,ecal与正则表达式

sort命令 uniq命令 tr命令 cut命令 sphit命令 paste命令 ecal命令 正则表达式 sort命令 sort命令---以行为单位对文件内容进行排序&#xff0c;也可以根据不同的数据类型来排序 比较原则是从首字符向后&#xff0c;依次按ASCII码值进行比较&#xff0c;最后将他们按升序…

通过java将数据导出为PDF,包扣合并单元格操作

最近项目中需要将查询出来的表格数据以PDF形式导出&#xff0c;并且表格的形式包含横向行与纵向列的单元格合并操作&#xff0c;导出的最终效果如图所示&#xff1a; 首先引入操作依赖 <!--导出pdf所需包--><dependency><groupId>com.itextpdf</groupId&…

【js获取月份最后一天】

功能 获取月份最后一天 代码 function getLastDay(year, month) {//返回月份最后一天&#xff0c;不写参数默认返回本月最后一天var date new Date(),date2, day;if (year undefined) year date.getFullYear(); //获取今年年份if (month undefined) month date.getMont…

Linux- cron调度进程

cron 是一个 Unix 类操作系统中的时间调度守护进程&#xff0c;用于在特定的时间或间隔运行指定的命令或脚本。它非常适合自动化系统管理和维护任务&#xff0c;如备份、日志轮转、系统监控等。以下是 cron 守护进程的详细介绍。 cron 守护进程的工作原理 crontab 文件&#x…

上海市计算机学会竞赛平台2022年5月月赛丙组三数排序

题目描述 给定三个整数 &#x1d44e;,&#x1d44f;,&#x1d450;a,b,c&#xff0c;请将它们以从小到大的顺序排序后输出。 输入格式 单独一行&#xff1a;三个整数表示 &#x1d44e;,&#x1d44f;,&#x1d450;a,b,c。 输出格式 单独一行&#xff1a;表示按升序排列…

汇聚荣:拼多多长期没有流量如何提高?

在电商的海洋中&#xff0c;拼多多以其独特的团购模式吸引了众多消费者的目光。然而&#xff0c;随着市场竞争的加剧和消费者需求的多样化&#xff0c;一些商家发现自家店铺的流量持续低迷&#xff0c;销售业绩难以突破。面对这样的挑战&#xff0c;如何有效提升拼多多店铺的客…

【Python】学生管理系统

为了了解Json以及在python中如何处理Json数据&#xff0c;我在这里整理了一段全面详细的 Python 代码&#xff0c;演示了如何加载、处理和操作 JSON 数据。该代码包括读取 JSON 数据、查询学生信息、添加新学生、更新课程信息等操作。 示例代码 import json# 示例 JSON 数据 …

深视 线扫相机 获取点云数据

Qt hello - 专注于Qt的技术分享平台 最近项目上用到了深视的线扫相机&#xff0c;集成了三天才搞定&#xff0c;分享下代码。 顺便吐槽一下&#xff0c;想用相机取图&#xff0c;这么简单的功能&#xff0c;搞得如此麻烦。 1&#xff0c;文档有三份&#xff0c;就不能集成到…

【计算机毕业设计】springboot反诈科普平台的设计与实现

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低反诈科普平台的运营人员成本&#xff0c;实现了反诈科普平台的 标准化、制度化、程序化的管理&#xff0c;有效地防止了反诈科普平台的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够…

python中字符串的 format() 方法

文章目录 前言1、位置参数2、索引参数3、命名参数3、格式化参数 前言 format() 是 Python 字符串对象的方法&#xff0c;用于将值插入到格式化字符串的占位符中。它是一种灵活和强大的字符串格式化工具。format() 方法可以在字符串中使用占位符 {}&#xff0c;并通过传递参数将…