📜  Java同步-监视器重入

📅  最后修改于: 2020-09-27 01:55:12             🧑  作者: Mango

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();
}}
Output: this is n() method
this is m() method