如果锁本身引起争议会发生什么?

Que*_*ing 8 java multithreading locking

Java中的所有对象都具有内部锁,这些锁用于同步.此概念可防止对象同时被不同的线程操纵,或帮助控制特定代码块的执行.

如果锁本身受到争议会发生什么 - 即2个线程要求锁定在精确的微秒.

谁得到它,它是如何得到解决的?

Ste*_*n C 3

如果锁本身发生争用,即 2 个线程在精确的微秒内请求锁,将会发生什么情况。

一个线程将获得锁,另一个线程将被阻塞,直到第一个线程释放它。

(旁白:其他一些答案断言Java中不存在“同时”这样的东西。他们是错误的!!有这样的东西!如果JVM正在使用多核中的两个或更多核系统中,那么不同内核上的两个线程可以在完全相同的硬件时钟周期中请求相同的对象锁。显然,只有一个线程会获得它,但这是一个不同的问题。)

谁得到了它,如何解决?

没有指定哪个线程将获得锁。

它(通常)由操作系统的线程调度程序解决......使用任何使用的机制。JVM 行为的这一方面(显然)是特定于平台的。

如果您真的非常想准确了解到底发生了什么,OpenJDK 和 Linux 的源代码是免费提供的。但坦白说,你不需要知道