Java如何实现锁定

Trầ*_* Dự 1 java multithreading operating-system locking

我经常使用多线程处理等问题一些Java机制AtomicInteger,synchronized...

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

Ste*_*n C 5

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

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


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