[英]Synchronized method calling other synchronized method
如果一个 java 同步方法调用另一个同步方法,那么 object 是否还有原来同步方法的锁?
为了更好地了解同步和锁,必须了解以下内容:
一、Object锁
二、 Class 锁
以下解释仅用于对 Object 锁的基本或低级理解
与您的问题相关:
NOTE:
Only Threads can Acquire or Release Locks.
Each Object has it's Own Object Lock. (Specific to Object / Instance)
Class Lock will be only One. (Specific to Class)
Example:
Employee e1 = new Employee();
Employee e2 = new Employee();
Employee e3 = new Employee();
Total Available Object Lock Count : 3 (THREE)
Total Available Class Lock Count : 1 (ONE)
同步方法调用另一个同步方法 - 在同一 Object 上:
一旦线程获得了 object 的锁,那么只有它允许访问
同步方法/块。 一旦获得锁,该线程就可以调用或访问具有相同锁的 object 中的任何其他同步方法。
注意:在这种情况下,线程只有一个锁。
同步方法调用另一个同步方法 - 在另一个 Object 上:
Once Thread acquired current Object Lock then thread calls another method on some other object then need to acquire Lock of Another Object then Thread has Two Object Locks.
注意:在这种情况下,线程有两个锁。
同步方法调用另一个同步方法 - 在多个对象上:
Method Chaining 处理线程经过多个同步方法后,将获取对应的Object 锁,一旦方法执行完毕,将释放对应的Object 的锁。
注意:在这种情况下,线程获得了多个 Object 锁。
注意:一个线程可以获取多个锁(或)'N' - 锁的数量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.