我经常使用一些Java机制来处理多线程问题,例如AtomicInteger、synchronized .
我的问题是: Java如何实现这些锁机制?我的意思是:在实现时,Java也会遇到多线程问题,以及它们如何处理。是否所有操作系统都有锁机制,而Java只是简单地调用它们的API。
发布于 2016-06-14 13:52:20
Java中锁的实现是特定于Java平台的指令集的。例如,对于x86,它可以在最低级别使用CMPXCHG指令--原子比较和交换--来实现锁的快速路径。CMPXCHG指令是一个比较和交换指令,它保证在硬件级别上访问原子内存。
如果线程不能立即获得锁,那么它可以是"spinlock“,也可以执行syscall来调度不同的线程。根据平台、JVM交换机等,使用不同的策略。
注意,在任何实现(高效)锁定的语言中,都有一点“黑魔法”来实现它。这可能是汇编程序编码库,或者是本机代码编译器中的一些智能代码,它们知道为某些字节码或“内在”方法调用注入特殊指令。
https://stackoverflow.com/questions/37813631
复制相似问题