【多线程面试题二十】、 如何实现互斥锁(mutex)?

news/2024/11/19 21:17:59/

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。

面试官:如何实现互斥锁(mutex)?

参考答案:

在Java里面,最基本的互斥同步手段就是synchronized关键字,这是一种块结构(Block Structured)的同步语法。synchronized关键字经过Javac编译之后,会在同步块的前后分别形成monitorenter和monitorexit这两个字节码指令。这两个字节码指令都需要一个reference类型的参数来指明要锁定和解锁的对象。如果Java源码中的synchronized明确指定了对象参数,那就以这个对象的引用作为reference。如果没有明确指定,那将根据synchronized修饰的方法类型(如实例方法或类方法),来决定是取代码所在的对象实例还是取类型对应的Class对象来作为线程要持有的锁。

自JDK 5起,Java类库中新提供了java.util.concurrent包(J.U.C包),其中的java.util.concurrent.locks.Lock接口便成了Java的另一种全新的互斥同步手段。基于Lock接口,用户能够以非块结构(Non-Block Structured)来实现互斥同步,从而摆脱了语言特性的束缚,改为在类库层面去实现同步,这也为日后扩展出不同调度算法、不同特征、不同性能、不同语义的各种锁提供了广阔的空间。


http://www.ppmy.cn/news/1186350.html

相关文章

pandas pct_change 计算间隔行的变化

在pandas中,可以使用.pct_change()方法计算DataFrame或Series中相邻两行的百分比变化。 .pct_change()方法的基本语法是: df.pct_change(periods1) 1 periods:计算相邻几行的变化,默认为1,表示相邻两行

C++设计模式_15_Proxy 代理模式

Proxy 代理模式也是属于“接口隔离”模式,通过增加一层间接层来解决问题的模式。 文章目录 1. 动机( Motivation)2. 模式定义3. 结构( Structure )4. 代码演示Proxy 代理模式4.1 常规方法4.2 Proxy 代理模式 5. 要点总结6. 其他参考 1. 动机( Motivation) 在面向对…

GoLand GC(垃圾回收机制)简介及调优

GC(Garbage Collector)垃圾回收机制及调优 简单理解GC机制 其实gc机制特别容易理解,就是物理内存的自动清理工。我们可以把内存想象成一个房间,程序运行时会在这个房间里存放各种东西,但有时候我们会忘记把不再需要的东西拿出去&#xff0c…

leetcode_811. 子域名访问计数

题目链接:https://leetcode.cn/problems/subdomain-visit-count/description/ 涉及知识点:库函数atoi,库函数strstr,库函数strchr,库函数sprintf,UT_hash 解法一:自己构造结构体 #define LEN…

lv8 嵌入式开发 网络编程开发 21 私有云盘项目

目录 1云盘项目简介 2 项目实现 2.1 首先实现TCP客户端、服务端 2.2 实现客户端函数简化 2.3 实现服务端函数简化 2.4 TCP数据连包现象 2.5 封装send函数和recv函数 2.6 建立readme说明 2.7 实现文件传输 2.8 读取配置文件种的ip、端口号,通过argv[1]参数实现文件传输…

pytorch:R-CNN的pytorch实现

pytorch:R-CNN的pytorch实现 仅作为学习记录,请谨慎参考,如果错误请评论指出。 参考文献:Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation      https://blog.csdn.net/qq_41694024/cat…

邮件怎样批量发送不同附件?邮件群发技巧?

如何批量发送不同附件的邮件?发送带不同附件邮件的方法? 当你需要向多个收件人发送带有不同附件的邮件时,可能会感到有些棘手。批量发送不同附件的邮件功能将成为你的得力助手。蜂邮EDM将介绍如何使用这一功能,轻松高效地发送多个…

TypeScript - 函数 -函数的默认参数

默认参数是个啥 如果不特殊指明,函数的参数都是必传的。但是,ts中提供了默认参数这一操作, 作用就是,给参数指定一个 默认的值,当调用函数而又未传这个参数时,就直接使用默认值。怎么写默认参数 默认参数的…