我研究 Java 的内部结构已经有一段时间了。我很想学习和理解 Java 中线程/锁定是如何发生的。
因此,为了访问同步方法或同步块,线程必须首先获取对象上的锁。所以,现在,这就是我需要更多光的地方。
那么,每当线程获取对象上的锁时,它是否会在内部增加信号量的值?如果答案是肯定的,那么让我们来看看这个场景。
class ABC{
public void method_1(){
synchronized(xyz){
....
}
}
public void method_2(){
...
synchronized(xyz){
....
}
}
}
因此,假设有两个线程:Thread 1 和 Thread 2。假设Thread1首先进入 method_1,因此首先获得了 xyz 上的锁。而且,现在说,Thread2进入 method_2 并尝试获取 xyz 上的锁定。会发生什么?(对我来说,Thread2 将被阻塞,因为它发现对象的信号量值>0)
让我知道我的推理是否正确。