Java教程-Java中的可重入监视器

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();//可重入类的调用方法
}
};
t1.start();
}}
Output: this is n() method
this is m() method