繁体   English   中英

同步方法调用其他同步方法

[英]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)
  1. 同步方法调用另一个同步方法 - 在同一 Object 上:

    一旦线程获得了 object 的锁,那么只有它允许访问
    同步方法/块。 一旦获得锁,该线程就可以调用或访问具有相同锁的 object 中的任何其他同步方法。

    注意:在这种情况下,线程只有一个锁。

  2. 同步方法调用另一个同步方法 - 在另一个 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.

    注意:在这种情况下,线程有两个锁。

  3. 同步方法调用另一个同步方法 - 在多个对象上:

    Method Chaining 处理线程经过多个同步方法后,将获取对应的Object 锁,一旦方法执行完毕,将释放对应的Object 的锁。

    注意:在这种情况下,线程获得了多个 Object 锁。

    注意:一个线程可以获取多个锁(或)'N' - 锁的数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM