多线程面试题(三)

目录

前言

一、请谈谈你对volatile的理解

二、什么是AQS?

三、ReentrantLock实现原理

四、synchronized和Lock有什么区别?

五、死锁产生的条件是什么?

总结


前言

  多线程volatile、AQS、Reentrantlock、synchronized和lock的区别面试题


一、请谈谈你对volatile的理解

  一个共享变量被volatile修饰

  1.保证线程间的可见性:防止编译器的优化,使一个线程对变量的修改对另一个线程可见

  2.禁止指令重排序:共享变量读写时加入不同的屏障,防止其他读写操作越过

二、什么是AQS?

  1.多线程的线程同步器,是一种锁机制,作为基础框架使用像是ReentrantLock,Semaphore等都是基于AQS

  2.内部维护了一个先进先出的双向队列,队列中存储排队的线程

  3.内部有一个state,相当一一个资源,默认为零,如果队列中有一个线程修改state为1,则当前线程相当于获取了资源

三、ReentrantLock实现原理

  1.表示支持重新进入的锁,调用lock方法获取锁后,再次调用lock时不会阻塞的

  2.底层使用CAS+AQS队列实现

  3.支持公平锁和非公平锁,在提供构造器时候,通过构造参数指定

四、synchronized和Lock有什么区别?

1.语法:

  synchronized是关键字,jvm提供,C++实现

  lock接口是jdk提供,java实现

  synchronized同步代码块结束会自动释放,而lock需要unlock手动释放

2.功能:

  二者都是悲观锁,都具备互斥、同步、锁重入功能

  Lock提供了synchronized不具备的功能,公平锁、可打断锁、可超时锁、多条件变量锁

  Lock有其他场景的实现如:Reentrantlock

3.性能:

  在没有竞争的时候,synchronized做了优化,偏向锁和轻量级锁,性能更好

  在竞争激烈的时候,lock实现通常会提供更好的性能

五、死锁产生的条件是什么?

  一个线程同时获取多把锁,容易死锁


总结

   劳累的一天结束了,简单记录今天的面试题

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

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

相关文章

前端路由的实现原理

当谈到前端路由时,指的是在前端应用中管理页面导航和URL的机制。前端路由使得单页应用(Single-Page Application,SPA)能够在用户与应用交互时动态地加载不同的视图,而无需每次都重新加载整个页面。 在前端开发中&…

货拉拉0-1数据指标体系构建与应用

目录 一、背景 二、指标体系搭建 2.1 指标设计 2.2 指标体系搭建 2.3 指标维度拆解 三、指标标准化建设 四、指标元数据管理 五、指标应用&未来规划 原文大佬介绍的这篇指标体系构建有借鉴意义,现摘抄下来用作沉淀学习。如有侵权请告知~ 一、背景 指标…

什么是仪器校准报告?

在科学实验和工业生产中,仪器是一种非常重要的辅助工具,无论是测量数据、控制实验进程还是保证产品质量,仪器都发挥着至关重要的作用。为了确保仪器的准确性和稳定性,仪器校准报告这一概念应运而生。本文给大家详细介绍仪器校准报…

利用STM32的定时器和中断实现精准时间控制

⬇帮大家整理了单片机的资料 包括stm32的项目合集【源码开发文档】 点击下方蓝字即可领取,感谢支持!⬇ 点击领取更多嵌入式详细资料 问题讨论,stm32的资料领取可以私信! 在嵌入式系统开发中,精确的时间控制是许多应用的…

0元实现网站HTTP升级到HTTPS(免费https证书)

HTTPS就是在HTTP的基础上加入了SSL,将一个使用HTTP的网站免费升级到HTTPS主要包括以下几个步骤: 1 获取SSL证书 永久免费的https证书申请通道https://www.joyssl.com/certificate/select/free.html?nid16 免费的SSL证书同样能实现HTTPS,国…

【前端】vue的基础知识及开发指引

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Vue是什么二、学习 Vue.js 的基础知识三、熟悉 Vue.js 的生态系统四、掌握常用工具和库五、实践和项目开发六、 持续学习和跟进 前言 随着开发语言及人工智…

[Windows] Bypass分流抢票 v1.16.25 五一黄金周自动抢票软件(2024.02.08更新)

五一黄金周要来了,火车票难买到,即便官网候选订票也要看运气,推荐使用这个靠谱的自动抢票软件, 该工具是目前市面上最好用口碑最好的电脑抢票软件,从13年到现在,作者依旧在更新,可以自动识别123…

优秀博士学位论文分享:通往稳健在线学习的“在线集成”理论与方法

优秀博士学位论文代表了各学科领域博士研究生研究成果的最高水平,本公众号近期将推出“优秀博士学位论文分享”系列文章,对人工智能领域2023年优秀博士学位论文进行介绍和分享,方便广大读者了解人工智能领域最前沿的研究进展。 “CCF博士学位…

用于自动化机器陀螺仪传感器:XV7081BB

介绍一款用于自动化机器的数字输出型陀螺仪传感器XV7081BB。这款新推出的陀螺仪XV7081BB到底有什么魅力呢?我们可以用常用款用于智能割草机的XV7011BB作对比:XV7081BB提供16位或24位分辨率的角速率输出速率范围为400s。而XV7011BB采用16位角速度输出,检测范围为100…

软考 系统架构设计师系列知识点之大数据设计理论与实践(13)

接前一篇文章:软考 系统架构设计师系列知识点之大数据设计理论与实践(12) 所属章节: 第19章. 大数据架构设计理论与实践 第4节 Kappa架构 19.4.2 Kappa架构介绍 Kappa架构由Jay Kreps提出(Lambda由Storm之父Nayhan M…

48-PCIE转串口和并口电路设计

视频链接 PCIE转串口和并口电路设计01_哔哩哔哩_bilibili PCIe转串口和并口电路设计 1、PCIe转串并口电路设计基本介绍 2、PCIe转串口和并口的方案(京东) 2.1、PCIe转串口 2.1.1、ASIX (亚信)MCS9922-PCIe转2路RS232扩展卡 2.1.2、ASIX (亚信)MCS9900-PCIe转4路RS232扩展卡…

yield函数怎么理解?

目录 白话系列: 例子🌰: 什么叫暂停 yield和next搭配使用 例子🌰: 白话系列: 可以暂停,可以生成,next一个,yield一个 例子🌰: def generat…

如何使用 Meta AI 根据文本提示生成图片

在数字艺术和设计的世界中,AI 图片生成器已经成为了一种创新工具,它能够根据简短的文本描述来创造出令人惊叹的视觉作品。Meta AI 提供了这样一个平台,让用户可以轻松地将他们的想象变为现实。在本文中,我将指导您如何使用 Meta A…

C++——类和对象练习(日期类)

日期类 1. 构造函数和析构函数2. 拷贝构造和赋值运算符重载3. 运算符重载3.1 日期的比较3.2 日期加减天数3.3 日期减日期3.4 流插入和流提取 4. 取地址和const取地址重载5. 完整代码Date.hDate.c 对日期类进行一个完善,可以帮助我们理解六个默认成员函数&#xff0c…

图搜索算法详解:广度优先搜索与深度优先搜索的探索之旅

图搜索算法详解:广度优先搜索与深度优先搜索的探索之旅 1. 广度优先搜索(BFS)1.1 伪代码1.2 C语言实现 2. 深度优先搜索(DFS)2.1 伪代码2.2 C语言实现 3. 总结 图搜索算法是计算机科学中用于在图结构中查找路径的算法。…

手撕红黑树(map和set底层结构)(2)

[TOC]红黑树 一 红黑树概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍&…

54-摄像头DVP接口电路设计

视频链接 摄像头电路设计-DVP接口01_哔哩哔哩_bilibili 摄像头DVP接口电路设计 1、摄像头简介 1.1、Camera介绍 在各类信息中,图像含有最丰富的信息,作为机器视觉领域的核心部件,摄像头被广泛应用。 目前市面上最常用的摄像头为OV5640。…

【面试必备】Python 快问快答

什么是 Python,它有哪些主要特点 答:Python 是一种高级解释型编程语言,以简单易读著称。其主要特点包括动态类型、自动内存管理(垃圾回收)、丰富的标准库以及对多种编程范式(过程式、面向对象、函数式&…

内容营销ROI提升秘籍:Kompas.ai的高效内容分析

在内容营销的领域中,投资回报率(ROI)是衡量营销活动成效的关键指标。一个高ROI的内容营销策略不仅能够为企业带来直接的经济收益,还能够提升品牌价值和市场影响力。本文将深入探讨内容营销中ROI的重要性,介绍Kompas.ai…

【嵌入式】Arduino IDE + ESP32开发环境配置

一 背景说明 最近想捣鼓一下ESP32的集成芯片,比较了一下,选择Arduino IDE并添加ESP32支持库的方式来开发,下面记录一下安装过程以及安装过程中遇到的坑。 二 下载准备 【1】Arduino IDE ESP32支持一键安装包(非常推荐&#xff0…