/**
* Atomically update Java variable to <tt>x</tt> if it is currently
* holding <tt>expected</tt>.
* @return <tt>true</tt> if successful
*/
public final native boolean compareAndSwapObject(Object o, long offset,
Object expected,
Object x);
Run Code Online (Sandbox Code Playgroud)
1)如果"value == expected",他们如何"原子地"将位置"offset"的"o"值设置为"x"?
2)当我们使用synchronized方法或synchronized块时,它们如何"锁定"对象?我很想知道引擎盖下的内容.
由于这是本机方法,因此它们将回退到目标平台提供的任何方法。IIRC,“比较和交换”在 10 多年前就作为处理器命令出现在 MIPS 和 SPARC 上。
他们在幕后使用类似 1 的东西来获取对象的锁定
| 归档时间: |
|
| 查看次数: |
982 次 |
| 最近记录: |