Java多线程面试题:描述一下线程安全活跃态问题,竞态条件?
一、线程安全活跃态问题
线程因为某件事情得不到执行
1、活锁
线程没有阻塞,但一直重复执行某个操作,并且失败重试
1)例子
- 在消息队列中,消费者没有正确ack消息,并且执行过程中报错了,消息会被重复执行,一直失败并重试
- for循环忘记break
- 递归忘记写结束条件
2)解决方案
等待随机时间,按照时间轮去重试,到达一定时间退出重试
2、 饥饿
线程因为无法访问所需资源而一直在等待
1)两种情况
- 线程优先级问题,不合理分配,导致部分线程始终无法获得CPU资源而一直无法执行
例如,读写锁,读优先,会造成饥饿,写一直在等 - 一些线程在临界区无限循坏等待资源,让其他线程一直拿不到锁进去临界区,进入了饥饿状态
2)解决方案
- 保证资源充足(但很多场景下,资源稀缺无法解决)
- 公平分配资源(使用公平锁,FIFO策略)
- 避免持有锁的线程长时间执行
3、死锁
多个线程互相等待对方释放锁的过程
二、竞态条件
多个线程同时访问相同资源,如果对资源的访问顺序敏感,就称存在竞态条件
最常见的情况
- 先检查后执行:检查值的状态,根据这个状态去更新,但期间可能被其它线程修改,导致执行结果出现各种问题
- 延迟初始化,单例
相关文章:
Java多线程面试题:描述一下线程安全活跃态问题,竞态条件?
一、线程安全活跃态问题 线程因为某件事情得不到执行 1、活锁 线程没有阻塞,但一直重复执行某个操作,并且失败重试 1)例子 在消息队列中,消费者没有正确ack消息,并且执行过程中报错了,消息会被重复执行&am…...
ZZNUOJ_用C语言编写程序实现1193:单科成绩排序(结构体专题)(附完整源码)
题目描述 有一学生成绩表,包括学号、姓名、3门课程成绩。请按要求排序输出:若输入1,则按第1门课成绩降序输出成绩表,若输入为i(1<i<3),则按第i门课成绩降序输出成绩表。 输入 首先输入一个整数n(1<…...
expect 使用方法
Expect是一个免费的 编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。 1、传参方法: bash是通过$0 ... $n接收参数 expect是通过set <变量名称> [lindex $argv <param index>], 2、判断语法 if { condition } { …...
Spring AOP详解-Spring官方原版
一、概述 面向方面编程(AOP)补充了面向对象编程(OOP) 提供了另一种思考程序结构的方式。模块化的关键单元 在OOP中是类,而在AOP中,模块化的单位是方面。方面 实现跨越问题(如事务管理)的模块化 多种类型和对象。(这种关切通常被称为“跨领域”关切 Spring 的关键组件之…...
链表习题精选(持续更新中)
第一题给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部…...
【log】操作类日志处理 与 报错类日志处理logback
文章目录一、操作类日志处理【环绕增强】aop环绕增强导包第一步:自定义注解interface第二步:在Controller写一个测试的方法:第三步:编写LogAspect增强类与增强方法日志写入数据库(使用mybatis)第一步&#…...
百度网盘好友发来的文件手动输入JS选择代码批量保存
基本代码:document.getElementsByClassName(global-clearfix)[3].getElementsByTagName(li)[0].getElementsByTagName(a)[0].click();范围选择函数:这个要手动全部取消选择function sel(a,b){var alidocument.getElementsByClassName(global-clearfix)[3…...
【CS224W】(task6)Google的PageRank算法
note 求解pagerank:用power iteration(幂迭代)方法求解 rM⋅r\mathbf{r}\mathbf{M} \cdot \mathbf{r}rM⋅r ( MMM 是重要度矩阵)用random uniform teleporation解决dead-ends(自己指向自己)和spider-traps(…...
Python安装拓展库及常用的pip命令及其用法
Python安装拓展库 在Python中,库是一些预先编写好的代码和函数,它们可以帮助你解决特定的问题。如果你想要扩展Python库,通常有两种方法:使用现有的第三方库,或者编写自己的库。 1.使用现有的第三方库 Python社区中…...
这9道软件测试面试题,就能刷掉90%的软件测试员
转眼就要到“金三银四”了,没点真本事真技术,没点面试经验,不了解点职场套路,如何过五关斩六将?如何打败面试官?如何拿下那梦寐以求的offer? 如果你的跳槽意向已经很确定,那么请往下…...
【大数据】大数据Hadoop生态圈
文章目录大数据Hadoop生态圈-组件介绍1、HDFS(分布式文件系统)2、MapReduce(分布式计算框架)3、Spark(分布式计算框架)4、Flink(分布式计算框架)5、Yarn/Mesos(分布式资源…...
python读取tif图像+经纬度
python读取tif的包很多,但大都只能读出图像像素值,不能读取到经纬度信息。原因:TIFF 简单理解就是一种图像格式,类似于 jpg、png 等。GeoTIFF 就是在普通 TIFF 文件上增加了地理位置、投影信息、坐标信息等,常用于遥感…...
Kali安装配置vulhub
一、vulhubVulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,主要利用于漏洞复现。Vulhub的官方地址为www.vulhub.org。二、搭建vulhub靶场2.1 开启kali虚拟机2.2 安装docker先更新一下软件…...
【进击的算法】动态规划——不同维度的背包问题
文章目录前言动态规划的维度二维动规leetcode416、分割等和子集leetcode1049. 最后一块石头的重量 IIleetcode494、目标和三维动规leetcode474. 一和零结语前言 大家好久不见,这次我们一起来学习一下动态规划中怎么确定维度,和对应问题如何解决。 动态…...
udiMagic 导入 Excel to Tally ERP Crack
关于 udiMagic 软件 udiMagic 是一款可帮助您快速轻松地将数据导入 Tally ERP 的应用程序。它由 Shweta Softwares 创建和分发,于2007 年首次推出。 您可以在 USB 闪存驱动器 [旅行许可证] 中携带 udiMagic,并在具有任何 Tally 版本的任何计算机上使用…...
Redis实现分页和多条件模糊查询方案
导言 Redis是一个高效的内存数据库,它支持包括String、List、Set、SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有模糊条件查询,在面对一些需要分页、排序以及条件查询的场景时(如评论&…...
【H5 | CSS | JS】如何实现网页打字机效果?快收下这份超详细指南(附源码)
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…...
Airbyte,数据集成的未来
Gartner 曾预计,到 2025 年,80% 寻求扩展数字业务的组织将失败。因为他们没有采用现代方法来进行数据和分析治理。数据生态是基础架构生态的最重要一环,数据的处理分发与计算,从始至终贯穿了整个数据流通生态。自从数据集中在数据…...
00.内容安排
内容安排如下01.Linux基本命令0.2 vim编辑器,gcc、gdb、makefile、动/静态库制作使用03.文件 I/O 常用函数、文件读写原理、进程控制快概念、阻塞、非阻塞概念04.文件常用操作函数、目录常用操作函数、重定向05.进程控制fork、exec函数组、进程回收 wait/waitpid06.…...
FreeRTOS任务基础知识
单任务和多任务系统单任务系统单任务系统的编程方式,即裸机的编程方式,这种编程方式的框架一般都是在main()函数中使用一个大循环,在循环中顺序的执行相应的函数以处理相应的事务,这个大循环的部分可以视为…...
SABIC塑料解决方案:宏裕塑胶全面代理原GE塑料高性能材料产品
宏裕塑胶依托源头直采优势整合沙伯基础创新SABIC等国际品牌资源,为制造业客户提供高性价比通用工程塑料原料及全流程技术支撑,助力企业降本增效。其代理产品涵盖PETG、PCTG、PBT、TPEE等全品类工程塑料,专为塑胶制品厂、汽车零部件厂等客户群…...
Cadence新手村任务:5分钟搞定嘉立创LED封装,让你的OrCAD原理图不再‘裸奔’
Cadence新手村任务:5分钟搞定嘉立创LED封装,让你的OrCAD原理图不再‘裸奔’ 刚安装好Cadence软件的新手设计师,面对空白的OrCAD原理图界面时,往往会感到无从下手。就像游戏角色初入新手村需要第一把武器,你的第一个电子…...
SDR++软件无线电:3个关键步骤让你轻松探索无线电频谱世界
SDR软件无线电:3个关键步骤让你轻松探索无线电频谱世界 【免费下载链接】SDRPlusPlus Cross-Platform SDR Software 项目地址: https://gitcode.com/GitHub_Trending/sd/SDRPlusPlus 你是否曾经好奇过无线电波中隐藏着怎样的秘密?从FM广播到航空通…...
【Qt学习】Windows上环境配置与项目初识
文章目录环境配置下载与安装环境变量设置查看示例程序Qt Creator界面说明快捷键项目帮助构建模式编码中文问题创建第一个Qt项目创建项目项目文件程序入口本文参照视频学习记录: https://www.bilibili.com/list/watchlater?oid970696801&bvidBV1Jp4y167R9视频中…...
D2001UK,1GHz频段下2.5W高功率输出的单端式硅DMOS RF FET射频晶体管
简介今天我要向大家介绍的是 Semelab 的硅DMOS RF FET晶体管——D2001UK。这是一款专为VHF/UHF通信频段(50 MHz至1 GHz)设计的单端式射频功率场效应管,在28V工作电压、1GHz频率下可提供2.5W的输出功率。作为一款高性能射频器件,它…...
抖音下载器技术深度解析:构建高效稳定的多媒体内容采集系统
抖音下载器技术深度解析:构建高效稳定的多媒体内容采集系统 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...
2026年AI论文网站盘点:12款神器助你高效完成学术写作、润色和降重
随着 AI 技术的持续突破,2026 年的论文写作工具市场已迈入“智能化、精细化、合规化”的新阶段。从本科生的课程论文到研究生的学位论文,再到科研人员的期刊投稿,AI 工具正在深度融入各类学术场景,为不同层次的写作者提供精准支持…...
RK3568国产工业级车载方案:从核心板设计到量产落地的全流程解析
1. 项目概述:为什么选择RK3568作为国产车载方案的基石?在车载电子这个领域,尤其是面向工业级和商用车载应用,选型一款合适的核心处理器平台,往往决定了整个项目的成败周期、成本控制以及最终产品的市场竞争力。过去很长…...
AzurLaneAutoScript深度解析:如何构建智能化的碧蓝航线自动化解决方案
AzurLaneAutoScript深度解析:如何构建智能化的碧蓝航线自动化解决方案 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript…...
Midjourney拟态风终极内参(2024.06最新版):含6类行业专属LORA融合权重表、11个失效规避checklist及3个已验证绕过--v 6.2限流机制的prompt结构
更多请点击: https://codechina.net 第一章:Midjourney拟态风的范式跃迁与v6.2限流本质解构 Midjourney v6.2 的发布并非一次简单的模型迭代,而是一场以“拟态风”(Mimetic Style)为内核的生成范式跃迁——其核心在于…...
