评论者:adamclements
是的,第一个补丁肯定是不对的,我留了一些上下文给对话,但为了清晰起见,最好还是直接删除它。
对于任何不希望反编译和观察字节码的跟帖者,这里有一个关于 Java 同步块与 Clojure 锁定区别的 gist:[链接](https://gist.github.com/AdamClements/2ae6c4919964b71eb470)
我也很难确定与规范偏差在哪里出现,尽管我可以看到与 Java 版本的差异,但 Clojure 版本似乎比 Java 版本更接近规范中所描述的!
如果有人在这方面比我更了解,并且能在 AOSP bug [链接](https://code.google.com/p/android/issues/detail?id=80823) 上进行讨论,那么也许我们可以将这个问题作为一个 Android bug 解决,它更多的是关注 Java 实现,而不是 JVM 规范,或者也许他们会找到 Clojure 实现中的错误。我已经上传了原始的 Clojure 行为,并要求他们解释为什么它会失败。