高并发-线程池

文章目录

  • 高并发-线程池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/pingmian/8277.shtml

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

相关文章

2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024)

2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024) 2024 International Conference on Virtual Reality, Image and Signal Processing(ICVISP 2024) 会议基本信息 会议时间:2024年8月2-4日 会议地点&#x…

2024年5月软考,别再傻傻啃书了!

备考2024年软考,不听课也不刷题,只是看教材的话,想要考试通过,几乎是不可能的,特别是基础比较薄弱的考生。 为什么只看教材通不过? 如果只是把教材从头到尾看一遍,毫无目的地看书,…

数据结构-线性表-应用题-2.2-5

从顺序表中删除其值在给定值s与t之间&#xff08;包括s和t&#xff0c;且s<t&#xff09;的所有元素&#xff0c;若s或t不合理或顺序表为空&#xff0c;则显示出错信息并退出运行。 从前往后扫描顺序表L&#xff0c;用k记录元素值在[s,t]的元素的个数&#xff0c;对于不在其…

FPGA学习笔记(1)——Vivado和HLS

1 Vivado设计 1.1 FPGA基本知识 Xilinx Atrix-7使用6输入LUT结构&#xff08;0-63&#xff09;CLB&#xff1a;可配置逻辑块Slice&#xff1a;每个CLB包含2个Slice(包含查找表LUT和8位寄存器REG)布线池&#xff1a;围绕在CLB周围&#xff0c;衔接FPGA的资源调度I/O块&#xf…

代码随想录35期Day32-Java

Day32题目 LeetCode122.买股票的最佳时机 核心思想&#xff1a;很简单&#xff0c;只要第二天比第一天贵&#xff0c;就第一天买入&#xff0c;第二天卖出 class Solution {public int maxProfit(int[] prices) {// 只要后一天比这一天价钱高就买&#xff0c;然后第二天卖出…

okcc呼叫中心为什么软电话已经注册,但是坐席监控却显示离线?

这种情况可能有几种可能的原因&#xff1a; 网络连接问题&#xff1a; 坐席监控系统可能无法正常与软电话建立连接&#xff0c;这可能是由于网络故障、防火墙设置或路由问题等引起的。 配置错误&#xff1a; 可能存在软电话配置或坐席监控系统配置方面的错误&#xff0c;导致无…

Qt宏和关键字

Q_GADGET 这个宏是Q_OBJECT宏的弱化版本吧&#xff0c;不过它可以继续 使用属性机制、反射等特性&#xff0c;但是不能使用信号与槽QT_INCLUDE_COMPAT 兼容版本QT_BEGIN_NAMESPACE 防止命名污染Q_GUI_EXPORT 为了实现跨平台以及插件Q_FLAG(RenderHint)&#xff0c;Q_DECLARE_FL…

test我说话撒机房环境

testhfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.z

启动配置 BOOT

在STM32F10xxx里&#xff0c;可以通过BOOT[1:0]引脚选择三种不同启动模式。 STM32微控制器实现了一个特殊的机制&#xff0c;系统可以不仅仅从Flash存储器或系统存储器启动&#xff0c;还可以从内置SRAM启动。 根据选定的启动模式&#xff0c;主闪存存储器、系统存储器或SRAM可…

centos常用命令介绍

CentOS是一个基于Linux的开源操作系统&#xff0c;它提供了大量的命令和工具&#xff0c;用于管理和配置系统。以下是一些CentOS中常用的命令及其简要介绍&#xff1a; 查看系统信息&#xff1a; uname -a&#xff1a;查看内核/操作系统/CPU信息。 head -n 1 /etc/issue&…

基于 docker-compose 部署 LNMP 架构

目录 前言 1、任务要求 2、Nginx 2.1 建立工作目录并上传相关安装包 2.2 编写 Nginx Dockerfile 脚本 2.3 准备 nginx.conf 配置文件 3、Mysql 3.1 建立工作目录并上传相关安装包 3.2 编写 Mysql Dockerfile 脚本 3.3 编写 my.cnf 配置文件 4、PHP 4.1 建立工作目录…

系统图表:洞察数据的价值与魅力

在数字化、信息化迅猛发展的今天&#xff0c;数据已经成为企业决策、科学研究、社会管理等领域的核心资源。而如何高效、准确地理解和利用这些数据&#xff0c;成为摆在我们面前的重要课题。系统图表作为数据可视化的重要呈现工具&#xff0c;不仅能帮助我们洞察数据的内在规律…

【Python】字典题

题目&#xff1a;输入一段文本&#xff0c;统计每个字符的个数 in_inputinput(“输入&#xff1a;”) dic{} for char in in_input: if char in dic: dic[char]1 # 字典添加键值对的方法&#xff0c;给字典给键和值的方法 else: dic[char]1 print(dic) for key,value in dic.i…

副业自媒体变现建议详解

大家好&#xff0c;我是来自AI破局俱乐部。针对这位匿名用户的问题&#xff0c;我将为大家提供更详细的副业自媒体变现建议。 【痕迹】QQ微信朋友圈和聊天记录分析工具1.0.3 &#xff08;1&#xff09;纯Python语言实现&#xff0c;使用Flask后端&#xff0c;本地分析&#xff…

计算机体系结构:6、指令流水线

6.指令流水线 6.1 流水线概述 6.1.1 流水线的执行效率 ​ 一条指令的执行过程可被分为若干阶段&#xff0c;每个阶段由相应的功能部件完成。一般而言&#xff0c;一条指令的流水线由如下5个流水段组成&#xff1a; 取指令(IF):从存储器取指令指令译码(ID):产生指令执行所需…

电脑连接公司打印机教程

第一步&#xff1a;连接上公司Wifi 第二步&#xff1a;打开设置 第三步&#xff1a;安装打印机驱动程序 3.1 查看打印机型号 打印机上面有个贴纸&#xff0c;上面就写有哦 3.2 进入该网页 打印机驱动,打印机驱动下载 - 打印机驱动网 (dyjqd.com) 下滑点击这里下载&#xff0…

ImageMagick

Linux 安装 sudo apt install php8.2-imagick Windows 安装 下载 ImageMagick ImageMagick – Download 安装并将 D:\Program Files\ImageMagick-7.1.1-Q16-HDRI 加入到系统环境变量 path 中&#xff0c; 或者将 CORE_RL_*.dll 复制到 c:\windows\system32 下 下载 php 扩展…

CSS定位(如果想知道CSS有关定位的知识点,那么只看这一篇就足够了!)

前言&#xff1a;在网页布局的时候&#xff0c;我们需要将想要的元素放到指定的位置上&#xff0c;这个时候我们就可以使用CSS中的定位操作。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下本篇文章的大致内容&…

Qt 简单使用串口

项目场景&#xff1a; Qt程序接收i.mx串口数据并使用。 基本实现&#xff1a; .h #ifndef MY_SERIAL_H #define MY_SERIAL_H #include "qextserialport.h" #include <QThread>class MySerialPort:public QextSerialPort{Q_OBJECT public:MySerialPort(QStri…

文件一键删除:高效清理电脑空间,批量删除重复文件的步骤与技巧

在数字化时代&#xff0c;我们的电脑中储存了大量的文件&#xff0c;从文档、图片到视频、音频等&#xff0c;各类文件混杂在一起。随着时间的推移&#xff0c;电脑中的文件数量不断增长&#xff0c;重复文件也随之增多&#xff0c;占用了宝贵的硬盘空间。为了高效清理电脑空间…