据说Lock
比synchronized
好,因为有许多原因,比如能力使用不同的范围,公平性等等。但就我而言,synchronized
就是使用本机代码实现,而ReentrantLock
和其他似乎是通常的java类。
我一直在查看ReentrantLock
源代码,似乎无法找到任何synchronized
块。有人可以解释一下如何在不使用synchronized
块的情况下同步不同的线程吗?似乎有很多操作,其中没有一个是原子的。
UPD:
它与question关于CPU使用率的不完全相同,而不是Lock
实现中用于提供同步的精确工具。我做了一些更多的研究,事实证明,在ReentrantLock
的核心,有native
方法获取Lock
。这就是我的问题的答案。