Java中的可重入监视器

根据Sun Microsystems的说法, Java监视器是可重入的, 这意味着, 如果从方法中调用方法, 则Java线程可以将同一监视器用于不同的同步方法。
可重入监控器的优势它消除了单线程死锁的可能性
让我们通过以下示例了解Java可重入监视器:

class Reentrant { public synchronized void m() { n(); System.out.println("this is m() method"); } public synchronized void n() { System.out.println("this is n() method"); } }

在此类中, m和n是同步方法。 m()方法在内部调用n()方法。
现在让我们在线程上调用m()方法。在下面给出的类中, 我们使用匿名类创建线程。
public class ReentrantExample{ public static void main(String args[]){ final ReentrantExample re=new ReentrantExample(); Thread t1=new Thread(){ public void run(){ re.m(); //calling method of Reentrant class } }; t1.start(); }}

【Java中的可重入监视器】立即测试
Output: this is n() method this is m() method

    推荐阅读