学习-java多线程面试题

news2025/4/13 12:38:53

为什么不建议用Executors启动线程池


*队列LinkedBlockingQueue是没有边界的队列,请求多会造成OOM
*建议使用ThreadPoolExecutors

线程池中提交一个任务的流程?

1先判断线程池是否有线程,如果与就直接执行,没有就放队列
2如果队列满了,就拒绝(代码要做处理)

 

线程池有的状态

1. Running(运行状态):线程池已经创建并且正在运行,可以接受新的任务并处理已提交的任务。 
 2. Shutdown(关闭状态):线程池不再接受新的任务,但会继续处理已提交的任务,直到所有任务完成。在关闭状态下,线程池不会创建新的线程。 
 3. Stop(停止状态):线程池不再接受新的任务,并且会中断正在执行的任务。它会尝试终止所有的工作线程。 
 4. Tidying(整理状态):所有的任务都已经终止,工作线程数量已经降为零。线程池会进行一些清理工作,例如关闭底层线程池等。 
 5. Terminated(终止状态):线程池已经完全终止,不再接受任务,也不会处理已提交的任务。  

优雅的停止线程

*stop(),释放synchronized,不会释放RreetranLock
*建议用字段(再线程做判断)
*用全局变量控制

tomcat是如何定义线程的

*tomcat中线程池走构造就会启动所有核心线程池
*tomcat的思想优先启动线程,线程达到上线才加入队列

线程池怎么设置核心线程数和最大线程数

*先看是CPU密集型 还是IO密集型,或者是混合型
*CUP密集可以+1
*IO密集可以X2
*核心业务可以多,非核心可以少,
*最终还是要压测得到合适的


 

volatile修饰的变量可以多线程可见

并发中的原则性要加锁实现

产生死锁的原因


1资源只能被一个线程使用
2线程阻塞 不释放被占用资源
3若干线程头尾相连的循环等待资源关系
建议:加锁顺序 。 设置超时时间,死锁检查

sychronize和ReetrantLock的区别

Java 中主要有以下几种锁: 


 *互斥锁(synchronized)**:互斥锁是 Java 中最常用的锁,它可以保证同一时间只有一个线程可以访问某个资源。 
*读写锁(ReentrantReadWriteLock)**:读写锁可以同时允许多个线程读取一个资源,但只有一个线程可以写入该资源。 
*公平锁(FairLock)**:公平锁保证等待时间最长的线程可以最先获得锁。 
*非公平锁(NonfairLock)**:非公平锁不保证等待时间最长的线程可以最先获得锁。 
*自旋锁(SpinLock)**:自旋锁是不需要操作系统参与的锁,它可以提高锁的性能。   耗cpu  建议在时间短的用 
*乐观锁(OptimisticLock)**:乐观锁假设在大多数情况下,多个线程不会同时访问同一个资源,因此它不会对资源进行加锁。 
如果需要保证同一时间只有一个线程可以访问某个资源,那么可以使用互斥锁。如果需要同时允许多个线程读取一个资源,但只有一个线程可以写入该资源,那么可以使用读写锁。如果需要保证等待时间最长的线程可以最先获得锁,那么可以使用公平锁。如果不需要保证等待时间最长的线程可以最先获得锁,那么可以使用非公平锁。如果需要提高锁的性能,那么可以使用自旋锁。如果需要在读操作时不加锁,那么可以使用乐观锁
 


 

from


https://www.yuque.com/tulingzhouyu/sfx8p0/dr3wi1f7uxi961uo?singleDoc#  密码:bghr

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

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

相关文章

【ArcGIS Pro微课1000例】0041:Pro强大的定位搜索功能、定位窗格、地图上查找地点

一谈到搜索,你是不是还停留在矢量数据的属性表中呢?今天给大家介绍ArcGIS Pro中定位搜索强大功能的使用,可以基于在线地图、矢量数据等多种数据源,进行地址、地名、道路、坐标等的查找。 文章目录 一、定位工具介绍二、在线地图搜索三、本地矢量数据搜索四、无地图搜索五、…

Makefile初学之谜之隐式规则

刚开始学习Make教程:https://makefiletutorial.vercel.app/#/docs/fancy-rules,里面有个sample: objects foo.o bar.o all.o all: $(objects)# These files compile via implicit rules foo.o: foo.c bar.o: bar.c all.o: all.call.c:echo "int…

分布式事务有哪些解决方案?

本文我们来讨论下分布式事务的相关知识点。 分布式事务是分布式系统中非常重要的一部分,最典型的例子是银行转账和扣款,A 和 B 的账户信息在不同的服务器上,A 给 B 转账 100 元,要完成这个操作,需要两个步骤&#xff0…

java蚁群算法的物流管理系统eclipse定制开发mysql数据库BS模式java编程百度地图

一、源码特点 java 基于蚁群算法的物流管理系统是一套完善的web设计系统 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发,数据库为Mysql5.0&a…

Debian下载安装教程

目录 一.前言二.下载三.安装 一.前言 这篇文章展示如何使用VMware Workstation Player安装Debian12虚拟机。 二.下载 官网地址:官网 进入官网之后可以直接点击下载Debian选项,这样下载的是最新版的网络安装镜像。 三.安装 使用VMware Workstation P…

听GPT 讲Rust源代码--src/tools(5)

File: rust/src/tools/rust-analyzer/crates/hir-ty/src/mir/lower.rs 在Rust源代码中,lower.rs文件位于Rust Analyzer项目的hir-ty子库中,其目的是将高级中间表示(HIR)降低为中间表示(MIR)。下面对文件及其…

一、Zookeeper基本知识

目录 1、ZooKeeper概述 2、ZooKeeper特性 3、ZooKeeper集群角色 ​​​​​​​1、ZooKeeper概述 Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。 ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录…

3D模型材质编辑

在线工具推荐: 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 如今,3D 纹理、打印和建模都非常流行。使用可用的高级工具,创建 3D 模型…

vscode插件离线下载

离线下载插件地址:https://marketplace.visualstudio.com/VSCode

SmartSoftHelp8,json格式化,校验工具

json格式化,校验工具 json 校验 json 格式化 本地校验 本地格式化 不需要联网 下载地址: https://pan.baidu.com/s/1zBgeYsqWnSlNgiKPR2lUYg?pwd8888​​​​​​​

前后端数据传输格式(上)

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 作为后端,写…

矩阵代数与MATLAB实现(特征值、广义特征值、酋矩阵、奇异值、托普利兹矩阵、汉克尔矩阵、范德蒙矩阵、)

矩阵代数的相关知识 目录 一、特征值与特征向量 1、特征值与特征向量 2、MATLAB计算 二、广义特征值与广义特征向量 1、广义特征值与广义特征向量 2、MATLAB计算 三、酋矩阵 1、酋矩阵 2、MATLAB计算 四、矩阵的奇异值分解 1、奇异值 2、MATLAB计算 五、托普利兹矩…

Spring事务管理介绍

文章目录 Spring事务管理1 Spring事务简介【重点】问题导入1.1 Spring事务作用1.2 需求和分析1.3 代码实现【前置工作】环境准备【第一步】在业务层接口上添加Spring事务管理【第二步】设置事务管理器(将事务管理器添加到IOC容器中)【第三步】开启注解式事务驱动【第四步】运行…

阿里系列-淘宝接口抓取及相关问题

阿里系-淘宝接口抓取 一、安装charlse抓包工具 官方下载地址 安装证书 二、安装xposed hook框架 Xponsed简介 具体安装步骤 三、安装模块 关闭阿里系ssl验证 开启http模式 支持支付宝、淘宝、淘宝直播各个接口抓取 四、效果如下 接下去一段时间更新阿里系相关接口 文章目录 一、…

WIN10 WIN11 关闭更新的绝佳办法(极简单无副作用)

WIN10 WIN11 关闭更新的绝佳办法(极简单无副作用) 极其简单用实用可以关闭更新20年 winr,输入regedit 打开注册表打开注册表的这个路径: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键空白的地方…

Redis 入门、基础。(五种基本类型使用场景)

文章目录 1. 概况1.1 认识 NoSQL1.1.1 查询方式1.1.2 事务1.1.3 总结 2. 认识 Redis4. Redis 常见命令4.1 Redis 数据结构介绍4.2 Redis 通用命令4.3 Redis 命令之 String 命令4.4 Redis 命令的层级结构4.5 Redis 命令之 Hash 命令4.6 Redis 命令之 List 命令4.7 set 唯一不排序…

蓝桥杯第1037题子串分值和 C++ 字符串 逆向思维 巧解

题目 思路和解题方法 方案一——遍历哈希表 仅能过60%样例,大多数同学都用的该方法&#xff0c;就不过多赘述 #include <iostream> #include <unordered_map> using namespace std; int main() {string s;cin >> s;int n s.size();int res n;for (int i 0…

字符指针变量数组指针变量

字符指针变量 在指针的类型中&#xff0c;我们知道有一种指针叫做字符指针 一般的使用情况如下&#xff1a; #include<stdio.h> int main() {char ch w;char* pa &ch;*pa h;printf("%c", *pa);return 0; } 还有一种使用方法如下&#xff1a; #incl…

CRM在设备制造行业的应用,优化资源配置

设备制造业竞争激烈&#xff0c;公司要以客户为中心&#xff0c;搞好售后服务。CRM管理软件是设备制造业客户关系管理的重要工具。以下是CRM在设备制造业里的典型应用。 1.营销管理 制订市场策略&#xff1a;设备制造通常涉及较长的决策周期和销售周期。客户可能会在多家供货商…

听GPT 讲Rust源代码--src/tools(6)

File: rust/src/tools/rust-analyzer/crates/ide/src/references.rs 在Rust源代码中&#xff0c;references.rs文件位于rust-analyzer工具的ide模块中&#xff0c;其作用是实现了用于搜索引用的功能。 该文件包含了多个重要的结构体、特质和枚举类型&#xff0c;我将逐一介绍它…