Java如何实现锁定

时间:2016-06-14 13:34:17

标签: java multithreading operating-system locking

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

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

1 个答案:

答案 0 :(得分:5)

Java中锁的实现特定于Java平台的指令集。例如,对于x86,可能使用CMPXCHG指令 - 原子比较和交换 - 在最低级别实现锁的快速路径。 CMPXCHG指令是compare-and-swap指令,用于保证硬件级别的原子存储器访问。

如果线程无法立即获取锁,那么它可以“自旋锁”或者它可以执行系统调用来安排不同的线程。根据平台,JVM交换机等使用不同的策略。

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