并发编程面试题1

一、原子性高频问题:

1.1 Java中如何实现线程安全?

多线程操作共享数据会出现问题。可以使用锁来解决:

  • 悲观锁: 使用 synchronizedLock
  • 乐观锁: 使用 CAS(Compare-And-Swap)

可以根据业务情况选择 ThreadLocal,让每个线程处理自己的数据。

1.2 CAS底层实现

回答思路: 先解释比较和交换的概念,在Java层面讨论native方法,再深入到C++中的 cmpxchg 指令,最后谈到 lock 指令保证 cmpxchg 的原子性。

在Java中,CAS(Compare-And-Swap)在Java层面可以看到 Unsafe 类中的native方法。

基本操作步骤:

  • 比较当前值与预期值是否一致,如果一致,交换并返回 true
  • 如果不一致,不交换并返回 false

可以查看 Unsafe 类中提供的CAS操作,有四个参数:对象、属性的内存偏移量、旧值和新值。

在这里插入图片描述

public final native boolean compareAndSwapInt(Object var1, long var2, int var4, int var5);

CAS的底层实现涉及到 cmpxchg 指令。在多核系统中,需要 lock 指令来保证 cmpxchg 的原子性。

  • cmpxchg 是一个汇编指令,支持比较和交换操作。
  • cmpxchg 本身不保证原子性,所以需要 lock 指令。
  • lock 指令在CPU层面相当于一个锁,通常粒度是缓存行级别,有时是总线锁,但成本较高。

1.3 CAS的常见问题

  • ABA问题: ABA问题不一定是问题。例如,仅有++,–的操作,不会影响结果。解决方案是使用带版本号的CAS,如 AtomicStampedReference
    在这里插入图片描述

  • 自旋次数过多: 自旋次数过多会消耗大量的CPU资源。解决方法:

    • synchronized 方向:CAS多次失败后,将线程挂起,避免占用过多CP

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Prometheus 监控服务器

Prometheus概述 组件化设置:nginx ,ceph , Prometheus 部署Prometheus服务器 配置时间 安装Prometheus服务器 访问web页面:http://192.168.88.5:9090/ 添加被监控端 监控方式: 拉取:pull。监控端联系被监控端,采集数…

116-基于5VLX110T FPGA FMC接口功能验证6U CPCI平台

一、板卡概述 本板卡是Xilinx公司芯片V5系列芯片设计信号处理板卡。由一片Xilinx公司的XC5VLX110T-1FF1136 / XC5VSX95T-1FF1136 / XC5VFX70T-1FF1136芯片组成。FPGA接1片DDR2内存条 2GB,32MB Nor flash存储器,用于存储程序。外扩 SATA、PCI、PCI expres…

STM32远程烧录程序

目录 简介 不同的程序下载方式 ICP:In-Circuit Programming ISP:In-System Programing IAP:In-Application Programming BootLoader Bootloader 是什么? STM32的启动方式 存储器组织 存储器映像 嵌入式SRAM 嵌入式FL…

【JVM系列】内存泄漏

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python数据分析-股票数据分析(GARCH模型)

一、研究背景 随着金融市场的不断发展和全球经济的日益复杂,市场波动性和风险管理成为投资者和金融机构关注的焦点。波动率是衡量市场风险的重要指标,准确预测和评估波动率对于资产定价、风险控制和投资决策具有重要意义。在金融时间序列分析中&#xf…

唐山养老院哪家好---老了怎么过?到这里,享受生活的每一刻!

随着时间的流逝,我们每个人都将迎来老年时光,而"老了,怎么过?"这个问题,虽然简单,却深深触动了无数人的心。 面对老年生活,每个人都有不同的选择和追求。有的人选择顺其自然&#xf…

单目相机减速带检测以及测距

单目相机减速带检测以及测距项目是一个计算机视觉领域的应用,旨在使用一个摄像头(单目相机)来识别道路上的减速带,并进一步估计车辆与减速带之间的距离。这样的系统对于智能驾驶辅助系统(ADAS)特别有用&…

新章节:全设备通用调度算法-通讯重构

新章节:全设备通用调度算法-通讯重构 文章目录 新章节:全设备通用调度算法-通讯重构前言一、重构了TCP和UDP通讯二、优化了OPC和OPCUA三、升级了监控客户端四、升级了通讯的图形化其他升级 前言 现在真的很懒也很少写代码了,写代码和更新进度…

Android 15 应用适配默认全屏的行为变更(Android V的新特性)

简介 Android V 上默认会使用全面屏兼容方式,影响应用显示,导致应用内跟导航标题重合,无法点击上移的内容。 默认情况下,如果应用以 Android 15(API 级别 35)为目标平台,在搭载 Android 15 的设…

【网络安全的神秘世界】SQL注入(下)

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 3.7 二次注入 不好挖这个漏洞,需要搞懂业务逻辑关系 二次注入通常是指在存入数据库时做了过滤,但是取…

vue中自定义设置多语言,并且运行js脚本自动生成多语言文件

在项目中需要进行多个国家语言的切换时,可以用到下面方法其中一个 一、自定义设置多语言 方法一: 可以自己编写一个设置多语言文件 在项目新建js文件,命名为:language.js,代码如下 // language.js 文档 let languagePage {CN…

Rocky Linux yum/dnf repo/mirrors 国内镜像列表及更换方法

Rocky Linux yum/dnf repo/mirrors 国内镜像列表及更换方法 Rocky Linux Mirrors 请访问原文链接:https://sysin.org/blog/rocky-linux-mirrors/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 高校镜像推荐 mirr…

聚观早报 | 微信升级视频功能;一加Ace 3 Pro开启销售

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 7月4日消息 微信升级视频功能 一加Ace 3 Pro开启销售 享界S9将亮相门店 澎湃OS出行助手将陆续升级 特斯拉公布二…

DDOS攻击不懂?看完让你秒懂!

什么是DDOS攻击? DDoS攻击,全称分布式拒绝服务攻击(Distributed Denial of Service attack),是一种常见的网络安全攻击方式。以下是对DDoS攻击的详细解释: DDoS攻击是指攻击者利用大量被控制的计算机或设备&#xff…

如何查看JDK使用的垃圾收集器

在Java开发中,垃圾收集器(Garbage Collector, GC)是管理内存的关键组件,不同的垃圾收集器对应用性能有着显著影响。了解当前JDK使用的垃圾收集器对于性能调优至关重要。本文将介绍如何查看JDK使用的垃圾收集器。 JDK中的垃圾收集…

提升Android Studio开发体验:使用Kelp插件实现颜色和图标预览

提升Android Studio开发体验:使用Kelp插件实现颜色和图标预览 在Android开发中,自动补全功能对于提高开发效率至关重要。然而,默认的Android Studio并不能预览颜色和图标,这使得开发者在选择资源时常常感到困惑。本文将介绍如何使…

Linux中cat命令的英文含义

我之前一直在想cat不是猫的意思吗,但是cat命令在Linux中并不是指"猫"这个动物,而是来源于它的功能:concatenate(连接)和typeset(打印)。这个命令的名称是这两个功能的首字母缩写。尽管…

「电子数据」龙信助力鞍山市公安局电子数据取证竞赛

文章关键词:电子数据取证、服务支持、电子数据取证竞赛服务、取证人才培养 为进一步推动电子数据取证分析专业人才队伍建设,不断提高电子数据取证分析能力,7月1日,鞍山市公安局网安支队举办了电子数据取证竞赛,并取得…

【SOLID原则前端中的应用】里氏替换原则(Liskov Substitution Principle,LSP)- vue3示例

里氏替换原则(Liskov Substitution Principle,LSP)规定,子类对象必须能够替换父类对象,并且程序的行为保持不变。 在Vue 3中,这意味着我们在创建可替换的组件时,应该确保子组件能够完全替代父组…

杭州叉车A38老款国二 车辆维修与保养

发动机参数 更换缸垫 故障表现特征: 1. 发动机发动风扇端有异响,喷气 2. 水箱加水后外冒有水气泡 车型: 新柴490B 预估市场平均价格: 25一个 发动机-气门间隙调整 气门间隙大小: 经询问相关师傅,此次调整…