首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java如何实现锁

Java如何实现锁
EN

Stack Overflow用户
提问于 2016-06-14 13:34:16
回答 1查看 615关注 0票数 1

我经常使用一些Java机制来处理多线程问题,例如AtomicIntegersynchronized .

我的问题是: Java如何实现这些锁机制?我的意思是:在实现时,Java也会遇到多线程问题,以及它们如何处理。是否所有操作系统都有锁机制,而Java只是简单地调用它们的API。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-14 13:52:20

Java中锁的实现是特定于Java平台的指令集的。例如,对于x86,它可以在最低级别使用CMPXCHG指令--原子比较和交换--来实现锁的快速路径。CMPXCHG指令是一个比较和交换指令,它保证在硬件级别上访问原子内存。

如果线程不能立即获得锁,那么它可以是"spinlock“,也可以执行syscall来调度不同的线程。根据平台、JVM交换机等,使用不同的策略。

注意,在任何实现(高效)锁定的语言中,都有一点“黑魔法”来实现它。这可能是汇编程序编码库,或者是本机代码编译器中的一些智能代码,它们知道为某些字节码或“内在”方法调用注入特殊指令。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37813631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档